@oneuptime/common 10.7.2 → 10.8.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/CloudResource.ts +846 -0
- package/Models/DatabaseModels/CloudResourceInstance.ts +276 -0
- package/Models/DatabaseModels/CloudResourceLabelRule.ts +510 -0
- package/Models/DatabaseModels/CloudResourceOwnerRule.ts +592 -0
- package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/CloudResourceOwnerUser.ts +486 -0
- package/Models/DatabaseModels/Host.ts +209 -0
- package/Models/DatabaseModels/Index.ts +36 -0
- package/Models/DatabaseModels/RumApplication.ts +731 -0
- package/Models/DatabaseModels/RumApplicationClient.ts +229 -0
- package/Models/DatabaseModels/RumApplicationLabelRule.ts +510 -0
- package/Models/DatabaseModels/RumApplicationOwnerRule.ts +592 -0
- package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +486 -0
- package/Models/DatabaseModels/RumApplicationOwnerUser.ts +485 -0
- package/Models/DatabaseModels/ServerlessFunction.ts +881 -0
- package/Models/DatabaseModels/ServerlessFunctionInstance.ts +212 -0
- package/Models/DatabaseModels/ServerlessFunctionLabelRule.ts +510 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerRule.ts +592 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +486 -0
- package/Models/DatabaseModels/Service.ts +268 -0
- package/Models/DatabaseModels/TelemetryException.ts +15 -1
- package/Models/DatabaseModels/WorkflowLog.ts +52 -0
- package/Server/API/TelemetryAPI.ts +78 -25
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.ts +21 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.ts +108 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.ts +205 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.ts +195 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.ts +202 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.ts +156 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.ts +149 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.ts +149 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.ts +95 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +22 -0
- package/Server/Infrastructure/Queue.ts +11 -0
- package/Server/Services/CloudResourceInstanceService.ts +76 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +175 -0
- package/Server/Services/CloudResourceLabelRuleService.ts +14 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +192 -0
- package/Server/Services/CloudResourceOwnerRuleService.ts +14 -0
- package/Server/Services/CloudResourceOwnerTeamService.ts +10 -0
- package/Server/Services/CloudResourceOwnerUserService.ts +10 -0
- package/Server/Services/CloudResourceService.ts +342 -0
- package/Server/Services/ExceptionAggregationService.ts +3 -0
- package/Server/Services/HostService.ts +42 -0
- package/Server/Services/LogAggregationService.ts +44 -16
- package/Server/Services/MetricAggregationService.ts +3 -0
- package/Server/Services/OpenTelemetryIngestService.ts +148 -1
- package/Server/Services/RumApplicationClientService.ts +69 -0
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +175 -0
- package/Server/Services/RumApplicationLabelRuleService.ts +14 -0
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +192 -0
- package/Server/Services/RumApplicationOwnerRuleService.ts +14 -0
- package/Server/Services/RumApplicationOwnerTeamService.ts +10 -0
- package/Server/Services/RumApplicationOwnerUserService.ts +10 -0
- package/Server/Services/RumApplicationService.ts +301 -0
- package/Server/Services/ServerlessFunctionInstanceService.ts +61 -0
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +182 -0
- package/Server/Services/ServerlessFunctionLabelRuleService.ts +14 -0
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +199 -0
- package/Server/Services/ServerlessFunctionOwnerRuleService.ts +14 -0
- package/Server/Services/ServerlessFunctionOwnerTeamService.ts +10 -0
- package/Server/Services/ServerlessFunctionOwnerUserService.ts +10 -0
- package/Server/Services/ServerlessFunctionService.ts +351 -0
- package/Server/Services/ServiceService.ts +95 -8
- package/Server/Services/TraceAggregationService.ts +131 -4
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +39 -0
- package/Server/Types/Workflow/ComponentCode.ts +9 -0
- package/Server/Types/Workflow/Components/Index.ts +2 -0
- package/Server/Types/Workflow/Components/Sleep.ts +105 -0
- package/Server/Types/Workflow/Workflow.ts +6 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +150 -0
- package/Types/Permission.ts +692 -1
- package/Types/Telemetry/ServiceType.ts +3 -0
- package/Types/Workflow/ComponentID.ts +1 -0
- package/Types/Workflow/Components/Sleep.ts +71 -0
- package/Types/Workflow/Components.ts +2 -0
- package/Types/Workflow/WorkflowStatus.ts +1 -0
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +159 -32
- package/UI/Components/Navbar/NavBar.tsx +72 -123
- package/UI/Components/Navbar/NavBarMenuModal.tsx +642 -0
- package/UI/Components/Workflow/WorkflowStatus.tsx +3 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js +871 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js +300 -0
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Host.js +215 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +36 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +751 -0
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationClient.js +252 -0
- package/build/dist/Models/DatabaseModels/RumApplicationClient.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js +908 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js +234 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Service.js +276 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLog.js +53 -0
- package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +61 -23
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js +53 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js +67 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js +45 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js +27 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +3 -0
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceInstanceService.js +76 -0
- package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleService.js +13 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js +9 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceService.js +287 -0
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js +3 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +29 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +36 -10
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +3 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +98 -2
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationClientService.js +70 -0
- package/build/dist/Server/Services/RumApplicationClientService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleService.js +13 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/RumApplicationOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerUserService.js +9 -0
- package/build/dist/Server/Services/RumApplicationOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationService.js +259 -0
- package/build/dist/Server/Services/RumApplicationService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +64 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js +13 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionService.js +299 -0
- package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -0
- package/build/dist/Server/Services/ServiceService.js +63 -7
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +108 -4
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +39 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
- package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Sleep.js +85 -0
- package/build/dist/Server/Types/Workflow/Components/Sleep.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +90 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Types/Permission.js +609 -1
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +3 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/Types/Workflow/ComponentID.js +1 -0
- package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Sleep.js +64 -0
- package/build/dist/Types/Workflow/Components/Sleep.js.map +1 -0
- package/build/dist/Types/Workflow/Components.js +2 -0
- package/build/dist/Types/Workflow/Components.js.map +1 -1
- package/build/dist/Types/Workflow/WorkflowStatus.js +1 -0
- package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +113 -19
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +34 -66
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +412 -0
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatus.js +3 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatus.js.map +1 -1
- package/package.json +1 -1
- package/UI/Components/Navbar/NavBarMenu.tsx +0 -183
- package/UI/Components/Navbar/NavBarMenuItem.tsx +0 -146
- package/build/dist/UI/Components/Navbar/NavBarMenu.js +0 -82
- package/build/dist/UI/Components/Navbar/NavBarMenu.js.map +0 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js +0 -109
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js.map +0 -1
|
@@ -367,6 +367,17 @@ import { MigrationName1780387560604 } from "./1780387560604-MigrationName";
|
|
|
367
367
|
import { MigrationName1780388219225 } from "./1780388219225-MigrationName";
|
|
368
368
|
import { AddMetricAndTraceSavedView1780645560183 } from "./1780645560183-AddMetricAndTraceSavedView";
|
|
369
369
|
import { AddKubernetesLatestMemoryPercent1780651429467 } from "./1780651429467-AddKubernetesLatestMemoryPercent";
|
|
370
|
+
import { AddResumeStateToWorkflowLog1780931746908 } from "./1780931746908-AddResumeStateToWorkflowLog";
|
|
371
|
+
import { AddTelemetryResourceMetadataColumns1780931863719 } from "./1780931863719-AddTelemetryResourceMetadataColumns";
|
|
372
|
+
import { AddServerlessFunctionTables1780933132562 } from "./1780933132562-AddServerlessFunctionTables";
|
|
373
|
+
import { AddCloudResourceTables1780935387827 } from "./1780935387827-AddCloudResourceTables";
|
|
374
|
+
import { AddRumApplicationTables1780936579718 } from "./1780936579718-AddRumApplicationTables";
|
|
375
|
+
import { AddServerlessFunctionRuleTables1780938407319 } from "./1780938407319-AddServerlessFunctionRuleTables";
|
|
376
|
+
import { AddCloudResourceRuleTables1780940721814 } from "./1780940721814-AddCloudResourceRuleTables";
|
|
377
|
+
import { AddRumApplicationRuleTables1780940998002 } from "./1780940998002-AddRumApplicationRuleTables";
|
|
378
|
+
import { AddTelemetryResourceInventoryTables1780941762204 } from "./1780941762204-AddTelemetryResourceInventoryTables";
|
|
379
|
+
import { AddRumApplicationSdkLanguage1780985763463 } from "./1780985763463-AddRumApplicationSdkLanguage";
|
|
380
|
+
import { RecastCloudResourcesByEnvironment1780987192743 } from "./1780987192743-RecastCloudResourcesByEnvironment";
|
|
370
381
|
|
|
371
382
|
export default [
|
|
372
383
|
InitialMigration,
|
|
@@ -738,4 +749,15 @@ export default [
|
|
|
738
749
|
MigrationName1780388219225,
|
|
739
750
|
AddMetricAndTraceSavedView1780645560183,
|
|
740
751
|
AddKubernetesLatestMemoryPercent1780651429467,
|
|
752
|
+
AddResumeStateToWorkflowLog1780931746908,
|
|
753
|
+
AddTelemetryResourceMetadataColumns1780931863719,
|
|
754
|
+
AddServerlessFunctionTables1780933132562,
|
|
755
|
+
AddCloudResourceTables1780935387827,
|
|
756
|
+
AddRumApplicationTables1780936579718,
|
|
757
|
+
AddServerlessFunctionRuleTables1780938407319,
|
|
758
|
+
AddCloudResourceRuleTables1780940721814,
|
|
759
|
+
AddRumApplicationRuleTables1780940998002,
|
|
760
|
+
AddTelemetryResourceInventoryTables1780941762204,
|
|
761
|
+
AddRumApplicationSdkLanguage1780985763463,
|
|
762
|
+
RecastCloudResourcesByEnvironment1780987192743,
|
|
741
763
|
];
|
|
@@ -192,6 +192,13 @@ export default class Queue {
|
|
|
192
192
|
options?: {
|
|
193
193
|
scheduleAt?: string | undefined;
|
|
194
194
|
repeatableKey?: string | undefined;
|
|
195
|
+
/**
|
|
196
|
+
* One-off delay in milliseconds before the job becomes eligible to run.
|
|
197
|
+
* Mutually exclusive with `scheduleAt` (a repeatable cron pattern); if
|
|
198
|
+
* both are set, `scheduleAt` wins. Used to park a delayed job (e.g. the
|
|
199
|
+
* Sleep component's durable resume).
|
|
200
|
+
*/
|
|
201
|
+
delayInMs?: number | undefined;
|
|
195
202
|
},
|
|
196
203
|
): Promise<Job> {
|
|
197
204
|
const sanitizedJobId: string = this.sanitizeJobId(jobId.toString());
|
|
@@ -200,6 +207,10 @@ export default class Queue {
|
|
|
200
207
|
jobId: sanitizedJobId,
|
|
201
208
|
};
|
|
202
209
|
|
|
210
|
+
if (options && options.delayInMs && options.delayInMs > 0) {
|
|
211
|
+
optionsObject.delay = options.delayInMs;
|
|
212
|
+
}
|
|
213
|
+
|
|
203
214
|
const queue: BullQueue = this.getQueue(queueName);
|
|
204
215
|
|
|
205
216
|
if (options && options.scheduleAt) {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/CloudResourceInstance";
|
|
3
|
+
import ObjectID from "../../Types/ObjectID";
|
|
4
|
+
import OneUptimeDate from "../../Types/Date";
|
|
5
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
6
|
+
import logger from "../Utils/Logger";
|
|
7
|
+
|
|
8
|
+
export class Service extends DatabaseService<Model> {
|
|
9
|
+
public constructor() {
|
|
10
|
+
super(Model);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Upsert a cloud-resource instance / task (service.instance.id) from ingest.
|
|
15
|
+
* Refreshes lastSeenAt (and cpu/mem when provided) if it already exists.
|
|
16
|
+
*/
|
|
17
|
+
@CaptureSpan()
|
|
18
|
+
public async recordInstance(data: {
|
|
19
|
+
projectId: ObjectID;
|
|
20
|
+
cloudResourceId: ObjectID;
|
|
21
|
+
instanceName: string;
|
|
22
|
+
cpuPercent?: number | undefined;
|
|
23
|
+
memoryBytes?: number | undefined;
|
|
24
|
+
}): Promise<void> {
|
|
25
|
+
try {
|
|
26
|
+
const existing: Model | null = await this.findOneBy({
|
|
27
|
+
query: {
|
|
28
|
+
projectId: data.projectId,
|
|
29
|
+
cloudResourceId: data.cloudResourceId,
|
|
30
|
+
instanceName: data.instanceName,
|
|
31
|
+
},
|
|
32
|
+
select: { _id: true },
|
|
33
|
+
props: { isRoot: true },
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
const fields: any = { lastSeenAt: OneUptimeDate.getCurrentDate() };
|
|
38
|
+
if (data.cpuPercent !== undefined) {
|
|
39
|
+
fields.latestCpuPercent = data.cpuPercent;
|
|
40
|
+
}
|
|
41
|
+
if (data.memoryBytes !== undefined) {
|
|
42
|
+
fields.latestMemoryBytes = data.memoryBytes;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (existing && existing._id) {
|
|
46
|
+
await this.updateOneById({
|
|
47
|
+
id: new ObjectID(existing._id.toString()),
|
|
48
|
+
data: fields,
|
|
49
|
+
props: { isRoot: true },
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const item: Model = new Model();
|
|
55
|
+
item.projectId = data.projectId;
|
|
56
|
+
item.cloudResourceId = data.cloudResourceId;
|
|
57
|
+
item.instanceName = data.instanceName;
|
|
58
|
+
item.lastSeenAt = OneUptimeDate.getCurrentDate();
|
|
59
|
+
if (data.cpuPercent !== undefined) {
|
|
60
|
+
item.latestCpuPercent = data.cpuPercent;
|
|
61
|
+
}
|
|
62
|
+
if (data.memoryBytes !== undefined) {
|
|
63
|
+
item.latestMemoryBytes = data.memoryBytes;
|
|
64
|
+
}
|
|
65
|
+
await this.create({ data: item, props: { isRoot: true } });
|
|
66
|
+
} catch (err) {
|
|
67
|
+
logger.warn(
|
|
68
|
+
`CloudResourceInstanceService.recordInstance failed: ${
|
|
69
|
+
err instanceof Error ? err.message : String(err)
|
|
70
|
+
}`,
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default new Service();
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import Label from "../../Models/DatabaseModels/Label";
|
|
2
|
+
import CloudResource from "../../Models/DatabaseModels/CloudResource";
|
|
3
|
+
import CloudResourceLabelRule from "../../Models/DatabaseModels/CloudResourceLabelRule";
|
|
4
|
+
import CloudResourceLabelRuleService from "./CloudResourceLabelRuleService";
|
|
5
|
+
import CloudResourceService from "./CloudResourceService";
|
|
6
|
+
import ObjectID from "../../Types/ObjectID";
|
|
7
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
8
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
9
|
+
|
|
10
|
+
class CloudResourceLabelRuleEngineServiceClass {
|
|
11
|
+
/**
|
|
12
|
+
* Evaluates CloudResourceLabelRule rows for the given resource and attaches
|
|
13
|
+
* matched labels. The union is deduped against labels already on the
|
|
14
|
+
* resource before insert to avoid PK conflicts on the join table.
|
|
15
|
+
*/
|
|
16
|
+
@CaptureSpan()
|
|
17
|
+
public async applyRulesToCloudResource(
|
|
18
|
+
cloudResource: CloudResource,
|
|
19
|
+
): Promise<void> {
|
|
20
|
+
if (!cloudResource.id || !cloudResource.projectId) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
const rules: Array<CloudResourceLabelRule> =
|
|
26
|
+
await CloudResourceLabelRuleService.findBy({
|
|
27
|
+
query: {
|
|
28
|
+
projectId: cloudResource.projectId,
|
|
29
|
+
isEnabled: true,
|
|
30
|
+
},
|
|
31
|
+
props: { isRoot: true },
|
|
32
|
+
select: {
|
|
33
|
+
_id: true,
|
|
34
|
+
name: true,
|
|
35
|
+
matchLabels: { _id: true },
|
|
36
|
+
nameRegexPattern: true,
|
|
37
|
+
descriptionRegexPattern: true,
|
|
38
|
+
labelsToAdd: { _id: true },
|
|
39
|
+
},
|
|
40
|
+
limit: 100,
|
|
41
|
+
skip: 0,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (rules.length === 0) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const resourceWithDetails: CloudResource | null =
|
|
49
|
+
await CloudResourceService.findOneById({
|
|
50
|
+
id: cloudResource.id,
|
|
51
|
+
select: {
|
|
52
|
+
name: true,
|
|
53
|
+
description: true,
|
|
54
|
+
labels: { _id: true },
|
|
55
|
+
},
|
|
56
|
+
props: { isRoot: true },
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (!resourceWithDetails) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const labelIdsToAdd: Set<string> = new Set();
|
|
64
|
+
|
|
65
|
+
for (const rule of rules) {
|
|
66
|
+
if (!this.doesMatchRule(resourceWithDetails, rule)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
for (const label of rule.labelsToAdd || []) {
|
|
70
|
+
if (label.id) {
|
|
71
|
+
labelIdsToAdd.add(label.id.toString());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (labelIdsToAdd.size === 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const existingLabelIds: Set<string> = new Set(
|
|
81
|
+
(resourceWithDetails.labels || [])
|
|
82
|
+
.map((l: Label) => {
|
|
83
|
+
return l.id?.toString() || "";
|
|
84
|
+
})
|
|
85
|
+
.filter((id: string) => {
|
|
86
|
+
return id !== "";
|
|
87
|
+
}),
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
const newLabelIds: Array<string> = Array.from(labelIdsToAdd).filter(
|
|
91
|
+
(id: string) => {
|
|
92
|
+
return !existingLabelIds.has(id);
|
|
93
|
+
},
|
|
94
|
+
);
|
|
95
|
+
if (newLabelIds.length === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
await CloudResourceService.getRepository()
|
|
100
|
+
.createQueryBuilder()
|
|
101
|
+
.relation(CloudResource, "labels")
|
|
102
|
+
.of(cloudResource.id.toString())
|
|
103
|
+
.add(newLabelIds);
|
|
104
|
+
|
|
105
|
+
const mergedLabelIds: Set<string> = new Set([
|
|
106
|
+
...existingLabelIds,
|
|
107
|
+
...newLabelIds,
|
|
108
|
+
]);
|
|
109
|
+
cloudResource.labels = Array.from(mergedLabelIds).map((id: string) => {
|
|
110
|
+
const label: Label = new Label();
|
|
111
|
+
label.id = new ObjectID(id);
|
|
112
|
+
return label;
|
|
113
|
+
});
|
|
114
|
+
} catch (error) {
|
|
115
|
+
logger.error(`Error applying cloud resource label rules: ${error}`, {
|
|
116
|
+
projectId: cloudResource.projectId?.toString(),
|
|
117
|
+
cloudResourceId: cloudResource.id?.toString(),
|
|
118
|
+
} as LogAttributes);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
private doesMatchRule(
|
|
123
|
+
cloudResource: CloudResource,
|
|
124
|
+
rule: CloudResourceLabelRule,
|
|
125
|
+
): boolean {
|
|
126
|
+
if (rule.matchLabels && rule.matchLabels.length > 0) {
|
|
127
|
+
if (!cloudResource.labels || cloudResource.labels.length === 0) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
const ruleLabelIds: Array<string> = rule.matchLabels.map((l: Label) => {
|
|
131
|
+
return l.id?.toString() || "";
|
|
132
|
+
});
|
|
133
|
+
const labelIds: Array<string> = cloudResource.labels.map((l: Label) => {
|
|
134
|
+
return l.id?.toString() || "";
|
|
135
|
+
});
|
|
136
|
+
if (
|
|
137
|
+
!ruleLabelIds.some((id: string) => {
|
|
138
|
+
return labelIds.includes(id);
|
|
139
|
+
})
|
|
140
|
+
) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (
|
|
146
|
+
rule.nameRegexPattern &&
|
|
147
|
+
(!cloudResource.name ||
|
|
148
|
+
!this.testRegex(rule.nameRegexPattern, cloudResource.name))
|
|
149
|
+
) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (
|
|
154
|
+
rule.descriptionRegexPattern &&
|
|
155
|
+
(!cloudResource.description ||
|
|
156
|
+
!this.testRegex(rule.descriptionRegexPattern, cloudResource.description))
|
|
157
|
+
) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
private testRegex(pattern: string, value: string): boolean {
|
|
165
|
+
try {
|
|
166
|
+
const regex: RegExp = new RegExp(pattern, "i");
|
|
167
|
+
return regex.test(value);
|
|
168
|
+
} catch {
|
|
169
|
+
logger.warn(`Invalid regex in cloud resource label rule: ${pattern}`);
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export default new CloudResourceLabelRuleEngineServiceClass();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/CloudResourceLabelRule";
|
|
3
|
+
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
4
|
+
|
|
5
|
+
export class Service extends DatabaseService<Model> {
|
|
6
|
+
public constructor() {
|
|
7
|
+
super(Model);
|
|
8
|
+
if (IsBillingEnabled) {
|
|
9
|
+
this.hardDeleteItemsOlderThanInDays("createdAt", 3 * 365);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default new Service();
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import Label from "../../Models/DatabaseModels/Label";
|
|
2
|
+
import CloudResource from "../../Models/DatabaseModels/CloudResource";
|
|
3
|
+
import CloudResourceOwnerRule from "../../Models/DatabaseModels/CloudResourceOwnerRule";
|
|
4
|
+
import CloudResourceOwnerUser from "../../Models/DatabaseModels/CloudResourceOwnerUser";
|
|
5
|
+
import CloudResourceOwnerTeam from "../../Models/DatabaseModels/CloudResourceOwnerTeam";
|
|
6
|
+
import CloudResourceOwnerRuleService from "./CloudResourceOwnerRuleService";
|
|
7
|
+
import CloudResourceOwnerUserService from "./CloudResourceOwnerUserService";
|
|
8
|
+
import CloudResourceOwnerTeamService from "./CloudResourceOwnerTeamService";
|
|
9
|
+
import CloudResourceService from "./CloudResourceService";
|
|
10
|
+
import ObjectID from "../../Types/ObjectID";
|
|
11
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
12
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
13
|
+
|
|
14
|
+
class CloudResourceOwnerRuleEngineServiceClass {
|
|
15
|
+
/**
|
|
16
|
+
* Evaluates CloudResourceOwnerRule rows for the given resource and adds
|
|
17
|
+
* matched owner users / teams. Rules with notifyOwners set notify the added
|
|
18
|
+
* owners; rules with notifyOwners off add silently.
|
|
19
|
+
*/
|
|
20
|
+
@CaptureSpan()
|
|
21
|
+
public async applyRulesToCloudResource(
|
|
22
|
+
cloudResource: CloudResource,
|
|
23
|
+
): Promise<void> {
|
|
24
|
+
if (!cloudResource.id || !cloudResource.projectId) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
const rules: Array<CloudResourceOwnerRule> =
|
|
30
|
+
await CloudResourceOwnerRuleService.findBy({
|
|
31
|
+
query: {
|
|
32
|
+
projectId: cloudResource.projectId,
|
|
33
|
+
isEnabled: true,
|
|
34
|
+
},
|
|
35
|
+
props: { isRoot: true },
|
|
36
|
+
select: {
|
|
37
|
+
_id: true,
|
|
38
|
+
name: true,
|
|
39
|
+
notifyOwners: true,
|
|
40
|
+
matchLabels: { _id: true },
|
|
41
|
+
nameRegexPattern: true,
|
|
42
|
+
descriptionRegexPattern: true,
|
|
43
|
+
ownerUsers: { _id: true },
|
|
44
|
+
ownerTeams: { _id: true },
|
|
45
|
+
},
|
|
46
|
+
limit: 100,
|
|
47
|
+
skip: 0,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (rules.length === 0) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const resourceWithDetails: CloudResource | null =
|
|
55
|
+
await CloudResourceService.findOneById({
|
|
56
|
+
id: cloudResource.id,
|
|
57
|
+
select: {
|
|
58
|
+
name: true,
|
|
59
|
+
description: true,
|
|
60
|
+
labels: { _id: true },
|
|
61
|
+
},
|
|
62
|
+
props: { isRoot: true },
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
if (!resourceWithDetails) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const usersByNotify: Map<boolean, Set<string>> = new Map([
|
|
70
|
+
[true, new Set()],
|
|
71
|
+
[false, new Set()],
|
|
72
|
+
]);
|
|
73
|
+
const teamsByNotify: Map<boolean, Set<string>> = new Map([
|
|
74
|
+
[true, new Set()],
|
|
75
|
+
[false, new Set()],
|
|
76
|
+
]);
|
|
77
|
+
|
|
78
|
+
let anyMatched: boolean = false;
|
|
79
|
+
|
|
80
|
+
for (const rule of rules) {
|
|
81
|
+
if (!this.doesMatchRule(resourceWithDetails, rule)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const notify: boolean = rule.notifyOwners !== false;
|
|
85
|
+
for (const user of rule.ownerUsers || []) {
|
|
86
|
+
if (user.id) {
|
|
87
|
+
usersByNotify.get(notify)!.add(user.id.toString());
|
|
88
|
+
anyMatched = true;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const team of rule.ownerTeams || []) {
|
|
92
|
+
if (team.id) {
|
|
93
|
+
teamsByNotify.get(notify)!.add(team.id.toString());
|
|
94
|
+
anyMatched = true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (!anyMatched) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
for (const notify of [true, false]) {
|
|
104
|
+
const userIds: Set<string> = usersByNotify.get(notify)!;
|
|
105
|
+
const teamIds: Set<string> = teamsByNotify.get(notify)!;
|
|
106
|
+
|
|
107
|
+
for (const userId of userIds) {
|
|
108
|
+
const owner: CloudResourceOwnerUser = new CloudResourceOwnerUser();
|
|
109
|
+
owner.cloudResourceId = cloudResource.id;
|
|
110
|
+
owner.projectId = cloudResource.projectId;
|
|
111
|
+
owner.userId = new ObjectID(userId);
|
|
112
|
+
owner.isOwnerNotified = !notify;
|
|
113
|
+
await CloudResourceOwnerUserService.create({
|
|
114
|
+
data: owner,
|
|
115
|
+
props: { isRoot: true },
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
for (const teamId of teamIds) {
|
|
120
|
+
const owner: CloudResourceOwnerTeam = new CloudResourceOwnerTeam();
|
|
121
|
+
owner.cloudResourceId = cloudResource.id;
|
|
122
|
+
owner.projectId = cloudResource.projectId;
|
|
123
|
+
owner.teamId = new ObjectID(teamId);
|
|
124
|
+
owner.isOwnerNotified = !notify;
|
|
125
|
+
await CloudResourceOwnerTeamService.create({
|
|
126
|
+
data: owner,
|
|
127
|
+
props: { isRoot: true },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
} catch (error) {
|
|
132
|
+
logger.error(`Error applying cloud resource owner rules: ${error}`, {
|
|
133
|
+
projectId: cloudResource.projectId?.toString(),
|
|
134
|
+
cloudResourceId: cloudResource.id?.toString(),
|
|
135
|
+
} as LogAttributes);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
private doesMatchRule(
|
|
140
|
+
cloudResource: CloudResource,
|
|
141
|
+
rule: CloudResourceOwnerRule,
|
|
142
|
+
): boolean {
|
|
143
|
+
if (rule.matchLabels && rule.matchLabels.length > 0) {
|
|
144
|
+
if (!cloudResource.labels || cloudResource.labels.length === 0) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const ruleLabelIds: Array<string> = rule.matchLabels.map((l: Label) => {
|
|
148
|
+
return l.id?.toString() || "";
|
|
149
|
+
});
|
|
150
|
+
const labelIds: Array<string> = cloudResource.labels.map((l: Label) => {
|
|
151
|
+
return l.id?.toString() || "";
|
|
152
|
+
});
|
|
153
|
+
if (
|
|
154
|
+
!ruleLabelIds.some((id: string) => {
|
|
155
|
+
return labelIds.includes(id);
|
|
156
|
+
})
|
|
157
|
+
) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (
|
|
163
|
+
rule.nameRegexPattern &&
|
|
164
|
+
(!cloudResource.name ||
|
|
165
|
+
!this.testRegex(rule.nameRegexPattern, cloudResource.name))
|
|
166
|
+
) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (
|
|
171
|
+
rule.descriptionRegexPattern &&
|
|
172
|
+
(!cloudResource.description ||
|
|
173
|
+
!this.testRegex(rule.descriptionRegexPattern, cloudResource.description))
|
|
174
|
+
) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
private testRegex(pattern: string, value: string): boolean {
|
|
182
|
+
try {
|
|
183
|
+
const regex: RegExp = new RegExp(pattern, "i");
|
|
184
|
+
return regex.test(value);
|
|
185
|
+
} catch {
|
|
186
|
+
logger.warn(`Invalid regex in cloud resource owner rule: ${pattern}`);
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export default new CloudResourceOwnerRuleEngineServiceClass();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/CloudResourceOwnerRule";
|
|
3
|
+
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
4
|
+
|
|
5
|
+
export class Service extends DatabaseService<Model> {
|
|
6
|
+
public constructor() {
|
|
7
|
+
super(Model);
|
|
8
|
+
if (IsBillingEnabled) {
|
|
9
|
+
this.hardDeleteItemsOlderThanInDays("createdAt", 3 * 365);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default new Service();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/CloudResourceOwnerTeam";
|
|
3
|
+
|
|
4
|
+
export class Service extends DatabaseService<Model> {
|
|
5
|
+
public constructor() {
|
|
6
|
+
super(Model);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default new Service();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/CloudResourceOwnerUser";
|
|
3
|
+
|
|
4
|
+
export class Service extends DatabaseService<Model> {
|
|
5
|
+
public constructor() {
|
|
6
|
+
super(Model);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default new Service();
|