@oneuptime/common 10.4.17 → 10.5.0
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/AnalyticsModels/ExceptionInstance.ts +24 -0
- package/Models/AnalyticsModels/Log.ts +16 -0
- package/Models/AnalyticsModels/Metric.ts +31 -0
- package/Models/AnalyticsModels/MonitorLog.ts +5 -0
- package/Models/AnalyticsModels/Profile.ts +25 -0
- package/Models/AnalyticsModels/ProfileSample.ts +20 -0
- package/Models/AnalyticsModels/Span.ts +23 -0
- package/Models/DatabaseModels/AlertEpisodeMember.ts +2 -0
- package/Models/DatabaseModels/AlertGroupingRule.ts +0 -38
- package/Models/DatabaseModels/AlertLabelRule.ts +152 -0
- package/Models/DatabaseModels/AlertOwnerRule.ts +114 -0
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +7 -0
- package/Models/DatabaseModels/IncidentEpisodeMember.ts +2 -0
- package/Models/DatabaseModels/IncidentGroupingRule.ts +0 -38
- package/Models/DatabaseModels/IncidentLabelRule.ts +114 -0
- package/Models/DatabaseModels/IncidentMember.ts +2 -0
- package/Models/DatabaseModels/IncidentOwnerRule.ts +114 -0
- package/Models/DatabaseModels/IncidentSla.ts +2 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +224 -0
- package/Models/DatabaseModels/Index.ts +2 -2
- package/Models/DatabaseModels/MetricPipelineRule.ts +2 -0
- package/Models/DatabaseModels/MonitorProbe.ts +2 -0
- package/Models/DatabaseModels/MonitorTest.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRule.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyTimeLog.ts +2 -0
- package/Models/DatabaseModels/OnCallDutyPolicyUserOverride.ts +2 -0
- package/Models/DatabaseModels/ProjectOidc.ts +4 -0
- package/Models/DatabaseModels/ProjectSCIM.ts +4 -0
- package/Models/DatabaseModels/ProjectSso.ts +4 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +220 -0
- package/Models/DatabaseModels/ScheduledMaintenanceLabelRule.ts +152 -0
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.ts +152 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +224 -0
- package/Models/DatabaseModels/StatusPageOidc.ts +6 -0
- package/Models/DatabaseModels/StatusPageSCIM.ts +4 -0
- package/Models/DatabaseModels/StatusPageSCIMLog.ts +2 -0
- package/Models/DatabaseModels/StatusPageSso.ts +6 -0
- package/Models/DatabaseModels/Team.ts +41 -0
- package/Models/DatabaseModels/TeamComplianceSetting.ts +4 -0
- package/Models/DatabaseModels/{ServiceMonitor.ts → TeamCustomField.ts} +95 -200
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +2 -0
- package/Models/DatabaseModels/WorkflowLog.ts +2 -0
- package/Models/DatabaseModels/WorkflowVariable.ts +2 -0
- package/Server/EnvironmentConfig.ts +3 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779392865146-AddAgentVersionToKubernetesDockerHost.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779653508434-AddLabelInheritanceAndScheduledMaintenanceResources.ts +160 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779708719656-AddAffectedResourcesToTemplates.ts +197 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779739410559-MigrationName.ts +36 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779742211961-AttachServiceToScheduledMaintenanceTemplatesAndLabelRules.ts +128 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779790539196-MigrationName.ts +53 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779823516881-ExpandOwnerRuleInheritFlags.ts +73 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779827700000-RenameStatusPageZhToZhCN.ts +62 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
- package/Server/Middleware/TelemetryIngestionDisabled.ts +32 -0
- package/Server/Services/AlertGroupingEngineService.ts +0 -29
- package/Server/Services/AlertLabelRuleEngineService.ts +129 -0
- package/Server/Services/AlertOwnerRuleEngineService.ts +205 -1
- package/Server/Services/IncidentGroupingEngineService.ts +0 -37
- package/Server/Services/IncidentLabelRuleEngineService.ts +83 -0
- package/Server/Services/IncidentOwnerRuleEngineService.ts +208 -10
- package/Server/Services/IncidentService.ts +139 -1
- package/Server/Services/Index.ts +0 -2
- package/Server/Services/MonitorProbeService.ts +56 -0
- package/Server/Services/MonitorService.ts +55 -0
- package/Server/Services/ProjectService.ts +17 -8
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +129 -0
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +289 -7
- package/Server/Services/StatusPageService.ts +30 -0
- package/Server/Services/TeamCustomFieldService.ts +9 -0
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +226 -28
- package/Server/Types/Database/Permissions/EditionPermission.ts +46 -0
- package/Server/Types/Database/Permissions/TablePermission.ts +8 -1
- package/Server/Utils/Monitor/MonitorAlert.ts +35 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +244 -34
- package/Tests/Server/Middleware/UserAuthorization.test.ts +11 -19
- package/Tests/Types/Permission.test.ts +129 -1
- package/Types/Accounts/AccountsLanguage.ts +10 -1
- package/Types/AdminDashboard/AdminDashboardLanguage.ts +10 -1
- package/Types/BaseDatabase/TableEditionAccessControl.ts +3 -0
- package/Types/Dashboard/DashboardLanguage.ts +10 -1
- package/Types/Database/AccessControl/TableEditionAccessControl.ts +8 -0
- package/Types/Date.ts +1 -1
- package/Types/Docs/DocsLanguage.ts +10 -1
- package/Types/Permission.ts +87 -54
- package/Types/StatusPage/StatusPageLanguage.ts +10 -1
- package/UI/Components/Charts/Area/AreaChart.tsx +1 -1
- package/UI/Components/Charts/Bar/BarChart.tsx +1 -1
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +5 -1
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +1 -1
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +11 -1
- package/UI/Components/Charts/Line/LineChart.tsx +1 -1
- package/UI/Components/Charts/Utils/XAxis.ts +21 -48
- package/UI/Components/EntityDropdown/EntityDropdown.tsx +1808 -0
- package/UI/Components/Forms/Fields/FormField.tsx +69 -29
- package/UI/Components/Link/Link.tsx +13 -1
- package/UI/Components/ModelDetail/ModelDetail.tsx +20 -19
- package/UI/Components/ModelTable/BaseModelTable.tsx +5 -0
- package/UI/Utils/User.ts +16 -0
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +39 -2
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +16 -0
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +31 -0
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MonitorLog.js +5 -0
- package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Profile.js +40 -2
- package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js +35 -2
- package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +23 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertGroupingRule.js +0 -39
- package/build/dist/Models/DatabaseModels/AlertGroupingRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js +156 -0
- package/build/dist/Models/DatabaseModels/AlertLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js +117 -0
- package/build/dist/Models/DatabaseModels/AlertOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +0 -39
- package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js +117 -0
- package/build/dist/Models/DatabaseModels/IncidentLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentMember.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js +117 -0
- package/build/dist/Models/DatabaseModels/IncidentOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentSla.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentSla.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +216 -0
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -2
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +2 -0
- package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorProbe.js +2 -0
- package/build/dist/Models/DatabaseModels/MonitorProbe.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTest.js +2 -0
- package/build/dist/Models/DatabaseModels/MonitorTest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRule.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleSchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyEscalationRuleUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyTimeLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyUserOverride.js +2 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyUserOverride.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectOidc.js +4 -0
- package/build/dist/Models/DatabaseModels/ProjectOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectSCIM.js +4 -0
- package/build/dist/Models/DatabaseModels/ProjectSCIM.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectSso.js +4 -0
- package/build/dist/Models/DatabaseModels/ProjectSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +216 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js +156 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js +156 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +216 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js +6 -0
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSCIM.js +4 -0
- package/build/dist/Models/DatabaseModels/StatusPageSCIM.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSCIMLog.js +2 -0
- package/build/dist/Models/DatabaseModels/StatusPageSCIMLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSso.js +6 -0
- package/build/dist/Models/DatabaseModels/StatusPageSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Team.js +42 -0
- package/build/dist/Models/DatabaseModels/Team.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamComplianceSetting.js +4 -0
- package/build/dist/Models/DatabaseModels/TeamComplianceSetting.js.map +1 -1
- package/build/dist/Models/DatabaseModels/{ServiceMonitor.js → TeamCustomField.js} +108 -209
- package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +2 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLog.js +2 -0
- package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js +2 -0
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +1 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779392865146-AddAgentVersionToKubernetesDockerHost.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779653508434-AddLabelInheritanceAndScheduledMaintenanceResources.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779653508434-AddLabelInheritanceAndScheduledMaintenanceResources.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779708719656-AddAffectedResourcesToTemplates.js +74 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779708719656-AddAffectedResourcesToTemplates.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779739410559-MigrationName.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779739410559-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779742211961-AttachServiceToScheduledMaintenanceTemplatesAndLabelRules.js +50 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779742211961-AttachServiceToScheduledMaintenanceTemplatesAndLabelRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779790539196-MigrationName.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779790539196-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779823516881-ExpandOwnerRuleInheritFlags.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779823516881-ExpandOwnerRuleInheritFlags.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779827700000-RenameStatusPageZhToZhCN.js +50 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779827700000-RenameStatusPageZhToZhCN.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngestionDisabled.js +22 -0
- package/build/dist/Server/Middleware/TelemetryIngestionDisabled.js.map +1 -0
- package/build/dist/Server/Services/AlertGroupingEngineService.js +0 -25
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +117 -3
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +175 -5
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +0 -31
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +76 -3
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +176 -14
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +104 -1
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +0 -2
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorProbeService.js +46 -0
- package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +40 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +17 -8
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +117 -3
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +245 -10
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +24 -0
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamCustomFieldService.js +9 -0
- package/build/dist/Server/Services/TeamCustomFieldService.js.map +1 -0
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +166 -26
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +45 -0
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -0
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js +7 -1
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +30 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +200 -31
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +8 -15
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
- package/build/dist/Tests/Types/Permission.test.js +90 -1
- package/build/dist/Tests/Types/Permission.test.js.map +1 -1
- package/build/dist/Types/Accounts/AccountsLanguage.js +10 -1
- package/build/dist/Types/Accounts/AccountsLanguage.js.map +1 -1
- package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js +10 -1
- package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js.map +1 -1
- package/build/dist/Types/BaseDatabase/TableEditionAccessControl.js +2 -0
- package/build/dist/Types/BaseDatabase/TableEditionAccessControl.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardLanguage.js +10 -1
- package/build/dist/Types/Dashboard/DashboardLanguage.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/TableEditionAccessControl.js +6 -0
- package/build/dist/Types/Database/AccessControl/TableEditionAccessControl.js.map +1 -0
- package/build/dist/Types/Date.js +1 -1
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Docs/DocsLanguage.js +10 -1
- package/build/dist/Types/Docs/DocsLanguage.js.map +1 -1
- package/build/dist/Types/Permission.js +80 -44
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/StatusPage/StatusPageLanguage.js +10 -1
- package/build/dist/Types/StatusPage/StatusPageLanguage.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +5 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +11 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +21 -47
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +1125 -0
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -0
- package/build/dist/UI/Components/Forms/Fields/FormField.js +28 -10
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Link/Link.js +11 -2
- package/build/dist/UI/Components/Link/Link.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/ModelDetail.js +20 -18
- package/build/dist/UI/Components/ModelDetail/ModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +4 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Utils/User.js +13 -0
- package/build/dist/UI/Utils/User.js.map +1 -1
- package/package.json +1 -1
- package/Server/Services/ServiceMonitorService.ts +0 -57
- package/build/dist/Models/DatabaseModels/ServiceMonitor.js.map +0 -1
- package/build/dist/Server/Services/ServiceMonitorService.js +0 -56
- package/build/dist/Server/Services/ServiceMonitorService.js.map +0 -1
|
@@ -1,17 +1,37 @@
|
|
|
1
|
+
import DockerHost from "../../Models/DatabaseModels/DockerHost";
|
|
2
|
+
import DockerHostOwnerTeam from "../../Models/DatabaseModels/DockerHostOwnerTeam";
|
|
3
|
+
import DockerHostOwnerUser from "../../Models/DatabaseModels/DockerHostOwnerUser";
|
|
4
|
+
import Host from "../../Models/DatabaseModels/Host";
|
|
5
|
+
import HostOwnerTeam from "../../Models/DatabaseModels/HostOwnerTeam";
|
|
6
|
+
import HostOwnerUser from "../../Models/DatabaseModels/HostOwnerUser";
|
|
7
|
+
import KubernetesCluster from "../../Models/DatabaseModels/KubernetesCluster";
|
|
8
|
+
import KubernetesClusterOwnerTeam from "../../Models/DatabaseModels/KubernetesClusterOwnerTeam";
|
|
9
|
+
import KubernetesClusterOwnerUser from "../../Models/DatabaseModels/KubernetesClusterOwnerUser";
|
|
1
10
|
import Label from "../../Models/DatabaseModels/Label";
|
|
2
11
|
import Monitor from "../../Models/DatabaseModels/Monitor";
|
|
3
12
|
import MonitorOwnerTeam from "../../Models/DatabaseModels/MonitorOwnerTeam";
|
|
4
13
|
import MonitorOwnerUser from "../../Models/DatabaseModels/MonitorOwnerUser";
|
|
5
14
|
import ScheduledMaintenance from "../../Models/DatabaseModels/ScheduledMaintenance";
|
|
6
15
|
import ScheduledMaintenanceOwnerRule from "../../Models/DatabaseModels/ScheduledMaintenanceOwnerRule";
|
|
16
|
+
import Service from "../../Models/DatabaseModels/Service";
|
|
17
|
+
import ServiceOwnerTeam from "../../Models/DatabaseModels/ServiceOwnerTeam";
|
|
18
|
+
import ServiceOwnerUser from "../../Models/DatabaseModels/ServiceOwnerUser";
|
|
7
19
|
import Team from "../../Models/DatabaseModels/Team";
|
|
8
20
|
import User from "../../Models/DatabaseModels/User";
|
|
21
|
+
import DockerHostOwnerTeamService from "./DockerHostOwnerTeamService";
|
|
22
|
+
import DockerHostOwnerUserService from "./DockerHostOwnerUserService";
|
|
23
|
+
import HostOwnerTeamService from "./HostOwnerTeamService";
|
|
24
|
+
import HostOwnerUserService from "./HostOwnerUserService";
|
|
25
|
+
import KubernetesClusterOwnerTeamService from "./KubernetesClusterOwnerTeamService";
|
|
26
|
+
import KubernetesClusterOwnerUserService from "./KubernetesClusterOwnerUserService";
|
|
9
27
|
import MonitorOwnerTeamService from "./MonitorOwnerTeamService";
|
|
10
28
|
import MonitorOwnerUserService from "./MonitorOwnerUserService";
|
|
11
29
|
import MonitorService from "./MonitorService";
|
|
12
30
|
import ScheduledMaintenanceFeedService from "./ScheduledMaintenanceFeedService";
|
|
13
31
|
import ScheduledMaintenanceOwnerRuleService from "./ScheduledMaintenanceOwnerRuleService";
|
|
14
32
|
import ScheduledMaintenanceService from "./ScheduledMaintenanceService";
|
|
33
|
+
import ServiceOwnerTeamService from "./ServiceOwnerTeamService";
|
|
34
|
+
import ServiceOwnerUserService from "./ServiceOwnerUserService";
|
|
15
35
|
import TeamService from "./TeamService";
|
|
16
36
|
import UserService from "./UserService";
|
|
17
37
|
import { ScheduledMaintenanceFeedEventType } from "../../Models/DatabaseModels/ScheduledMaintenanceFeed";
|
|
@@ -59,6 +79,10 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
59
79
|
ownerUsers: { _id: true },
|
|
60
80
|
ownerTeams: { _id: true },
|
|
61
81
|
inheritOwnersFromMonitors: true,
|
|
82
|
+
inheritOwnersFromHosts: true,
|
|
83
|
+
inheritOwnersFromKubernetesClusters: true,
|
|
84
|
+
inheritOwnersFromDockerHosts: true,
|
|
85
|
+
inheritOwnersFromServices: true,
|
|
62
86
|
},
|
|
63
87
|
limit: 100,
|
|
64
88
|
skip: 0,
|
|
@@ -81,6 +105,10 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
81
105
|
const allUserIds: Set<string> = new Set();
|
|
82
106
|
const allTeamIds: Set<string> = new Set();
|
|
83
107
|
let inheritFromMonitors: boolean = false;
|
|
108
|
+
let inheritFromHosts: boolean = false;
|
|
109
|
+
let inheritFromKubernetesClusters: boolean = false;
|
|
110
|
+
let inheritFromDockerHosts: boolean = false;
|
|
111
|
+
let inheritFromServices: boolean = false;
|
|
84
112
|
const inheritNotifyMode: { value: boolean | null } = { value: null };
|
|
85
113
|
|
|
86
114
|
for (const rule of rules) {
|
|
@@ -113,6 +141,30 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
113
141
|
inheritNotifyMode.value =
|
|
114
142
|
inheritNotifyMode.value === true ? true : notify;
|
|
115
143
|
}
|
|
144
|
+
if (rule.inheritOwnersFromHosts) {
|
|
145
|
+
inheritFromHosts = true;
|
|
146
|
+
ruleAddedAny = true;
|
|
147
|
+
inheritNotifyMode.value =
|
|
148
|
+
inheritNotifyMode.value === true ? true : notify;
|
|
149
|
+
}
|
|
150
|
+
if (rule.inheritOwnersFromKubernetesClusters) {
|
|
151
|
+
inheritFromKubernetesClusters = true;
|
|
152
|
+
ruleAddedAny = true;
|
|
153
|
+
inheritNotifyMode.value =
|
|
154
|
+
inheritNotifyMode.value === true ? true : notify;
|
|
155
|
+
}
|
|
156
|
+
if (rule.inheritOwnersFromDockerHosts) {
|
|
157
|
+
inheritFromDockerHosts = true;
|
|
158
|
+
ruleAddedAny = true;
|
|
159
|
+
inheritNotifyMode.value =
|
|
160
|
+
inheritNotifyMode.value === true ? true : notify;
|
|
161
|
+
}
|
|
162
|
+
if (rule.inheritOwnersFromServices) {
|
|
163
|
+
inheritFromServices = true;
|
|
164
|
+
ruleAddedAny = true;
|
|
165
|
+
inheritNotifyMode.value =
|
|
166
|
+
inheritNotifyMode.value === true ? true : notify;
|
|
167
|
+
}
|
|
116
168
|
if (ruleAddedAny) {
|
|
117
169
|
matchedRules.push(rule);
|
|
118
170
|
}
|
|
@@ -120,6 +172,14 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
120
172
|
|
|
121
173
|
const inheritedFromMonitorUserIds: Set<string> = new Set();
|
|
122
174
|
const inheritedFromMonitorTeamIds: Set<string> = new Set();
|
|
175
|
+
const inheritedFromHostUserIds: Set<string> = new Set();
|
|
176
|
+
const inheritedFromHostTeamIds: Set<string> = new Set();
|
|
177
|
+
const inheritedFromKubernetesClusterUserIds: Set<string> = new Set();
|
|
178
|
+
const inheritedFromKubernetesClusterTeamIds: Set<string> = new Set();
|
|
179
|
+
const inheritedFromDockerHostUserIds: Set<string> = new Set();
|
|
180
|
+
const inheritedFromDockerHostTeamIds: Set<string> = new Set();
|
|
181
|
+
const inheritedFromServiceUserIds: Set<string> = new Set();
|
|
182
|
+
const inheritedFromServiceTeamIds: Set<string> = new Set();
|
|
123
183
|
|
|
124
184
|
if (inheritFromMonitors && scheduledMaintenance.monitors?.length) {
|
|
125
185
|
const monitorIds: Array<ObjectID> = scheduledMaintenance.monitors
|
|
@@ -162,16 +222,200 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
162
222
|
}
|
|
163
223
|
}
|
|
164
224
|
|
|
225
|
+
if (inheritFromHosts && scheduledMaintenance.hosts?.length) {
|
|
226
|
+
const hostIds: Array<ObjectID> = scheduledMaintenance.hosts
|
|
227
|
+
.map((h: Host) => {
|
|
228
|
+
return h.id;
|
|
229
|
+
})
|
|
230
|
+
.filter((id: ObjectID | null | undefined): id is ObjectID => {
|
|
231
|
+
return Boolean(id);
|
|
232
|
+
});
|
|
233
|
+
if (hostIds.length > 0) {
|
|
234
|
+
const [hostOwnerUsers, hostOwnerTeams]: [
|
|
235
|
+
Array<HostOwnerUser>,
|
|
236
|
+
Array<HostOwnerTeam>,
|
|
237
|
+
] = await Promise.all([
|
|
238
|
+
HostOwnerUserService.findBy({
|
|
239
|
+
query: { hostId: QueryHelper.any(hostIds) },
|
|
240
|
+
select: { userId: true },
|
|
241
|
+
props: { isRoot: true },
|
|
242
|
+
limit: LIMIT_MAX,
|
|
243
|
+
skip: 0,
|
|
244
|
+
}),
|
|
245
|
+
HostOwnerTeamService.findBy({
|
|
246
|
+
query: { hostId: QueryHelper.any(hostIds) },
|
|
247
|
+
select: { teamId: true },
|
|
248
|
+
props: { isRoot: true },
|
|
249
|
+
limit: LIMIT_MAX,
|
|
250
|
+
skip: 0,
|
|
251
|
+
}),
|
|
252
|
+
]);
|
|
253
|
+
for (const ownerUser of hostOwnerUsers) {
|
|
254
|
+
if (ownerUser.userId) {
|
|
255
|
+
inheritedFromHostUserIds.add(ownerUser.userId.toString());
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
for (const ownerTeam of hostOwnerTeams) {
|
|
259
|
+
if (ownerTeam.teamId) {
|
|
260
|
+
inheritedFromHostTeamIds.add(ownerTeam.teamId.toString());
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
165
266
|
if (
|
|
166
|
-
|
|
167
|
-
|
|
267
|
+
inheritFromKubernetesClusters &&
|
|
268
|
+
scheduledMaintenance.kubernetesClusters?.length
|
|
168
269
|
) {
|
|
270
|
+
const clusterIds: Array<ObjectID> =
|
|
271
|
+
scheduledMaintenance.kubernetesClusters
|
|
272
|
+
.map((c: KubernetesCluster) => {
|
|
273
|
+
return c.id;
|
|
274
|
+
})
|
|
275
|
+
.filter((id: ObjectID | null | undefined): id is ObjectID => {
|
|
276
|
+
return Boolean(id);
|
|
277
|
+
});
|
|
278
|
+
if (clusterIds.length > 0) {
|
|
279
|
+
const [clusterOwnerUsers, clusterOwnerTeams]: [
|
|
280
|
+
Array<KubernetesClusterOwnerUser>,
|
|
281
|
+
Array<KubernetesClusterOwnerTeam>,
|
|
282
|
+
] = await Promise.all([
|
|
283
|
+
KubernetesClusterOwnerUserService.findBy({
|
|
284
|
+
query: { kubernetesClusterId: QueryHelper.any(clusterIds) },
|
|
285
|
+
select: { userId: true },
|
|
286
|
+
props: { isRoot: true },
|
|
287
|
+
limit: LIMIT_MAX,
|
|
288
|
+
skip: 0,
|
|
289
|
+
}),
|
|
290
|
+
KubernetesClusterOwnerTeamService.findBy({
|
|
291
|
+
query: { kubernetesClusterId: QueryHelper.any(clusterIds) },
|
|
292
|
+
select: { teamId: true },
|
|
293
|
+
props: { isRoot: true },
|
|
294
|
+
limit: LIMIT_MAX,
|
|
295
|
+
skip: 0,
|
|
296
|
+
}),
|
|
297
|
+
]);
|
|
298
|
+
for (const ownerUser of clusterOwnerUsers) {
|
|
299
|
+
if (ownerUser.userId) {
|
|
300
|
+
inheritedFromKubernetesClusterUserIds.add(
|
|
301
|
+
ownerUser.userId.toString(),
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
for (const ownerTeam of clusterOwnerTeams) {
|
|
306
|
+
if (ownerTeam.teamId) {
|
|
307
|
+
inheritedFromKubernetesClusterTeamIds.add(
|
|
308
|
+
ownerTeam.teamId.toString(),
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (inheritFromDockerHosts && scheduledMaintenance.dockerHosts?.length) {
|
|
316
|
+
const dockerHostIds: Array<ObjectID> = scheduledMaintenance.dockerHosts
|
|
317
|
+
.map((d: DockerHost) => {
|
|
318
|
+
return d.id;
|
|
319
|
+
})
|
|
320
|
+
.filter((id: ObjectID | null | undefined): id is ObjectID => {
|
|
321
|
+
return Boolean(id);
|
|
322
|
+
});
|
|
323
|
+
if (dockerHostIds.length > 0) {
|
|
324
|
+
const [dockerHostOwnerUsers, dockerHostOwnerTeams]: [
|
|
325
|
+
Array<DockerHostOwnerUser>,
|
|
326
|
+
Array<DockerHostOwnerTeam>,
|
|
327
|
+
] = await Promise.all([
|
|
328
|
+
DockerHostOwnerUserService.findBy({
|
|
329
|
+
query: { dockerHostId: QueryHelper.any(dockerHostIds) },
|
|
330
|
+
select: { userId: true },
|
|
331
|
+
props: { isRoot: true },
|
|
332
|
+
limit: LIMIT_MAX,
|
|
333
|
+
skip: 0,
|
|
334
|
+
}),
|
|
335
|
+
DockerHostOwnerTeamService.findBy({
|
|
336
|
+
query: { dockerHostId: QueryHelper.any(dockerHostIds) },
|
|
337
|
+
select: { teamId: true },
|
|
338
|
+
props: { isRoot: true },
|
|
339
|
+
limit: LIMIT_MAX,
|
|
340
|
+
skip: 0,
|
|
341
|
+
}),
|
|
342
|
+
]);
|
|
343
|
+
for (const ownerUser of dockerHostOwnerUsers) {
|
|
344
|
+
if (ownerUser.userId) {
|
|
345
|
+
inheritedFromDockerHostUserIds.add(ownerUser.userId.toString());
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
for (const ownerTeam of dockerHostOwnerTeams) {
|
|
349
|
+
if (ownerTeam.teamId) {
|
|
350
|
+
inheritedFromDockerHostTeamIds.add(ownerTeam.teamId.toString());
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
if (inheritFromServices && scheduledMaintenance.services?.length) {
|
|
357
|
+
const serviceIds: Array<ObjectID> = scheduledMaintenance.services
|
|
358
|
+
.map((s: Service) => {
|
|
359
|
+
return s.id;
|
|
360
|
+
})
|
|
361
|
+
.filter((id: ObjectID | null | undefined): id is ObjectID => {
|
|
362
|
+
return Boolean(id);
|
|
363
|
+
});
|
|
364
|
+
if (serviceIds.length > 0) {
|
|
365
|
+
const [serviceOwnerUsers, serviceOwnerTeams]: [
|
|
366
|
+
Array<ServiceOwnerUser>,
|
|
367
|
+
Array<ServiceOwnerTeam>,
|
|
368
|
+
] = await Promise.all([
|
|
369
|
+
ServiceOwnerUserService.findBy({
|
|
370
|
+
query: { serviceId: QueryHelper.any(serviceIds) },
|
|
371
|
+
select: { userId: true },
|
|
372
|
+
props: { isRoot: true },
|
|
373
|
+
limit: LIMIT_MAX,
|
|
374
|
+
skip: 0,
|
|
375
|
+
}),
|
|
376
|
+
ServiceOwnerTeamService.findBy({
|
|
377
|
+
query: { serviceId: QueryHelper.any(serviceIds) },
|
|
378
|
+
select: { teamId: true },
|
|
379
|
+
props: { isRoot: true },
|
|
380
|
+
limit: LIMIT_MAX,
|
|
381
|
+
skip: 0,
|
|
382
|
+
}),
|
|
383
|
+
]);
|
|
384
|
+
for (const ownerUser of serviceOwnerUsers) {
|
|
385
|
+
if (ownerUser.userId) {
|
|
386
|
+
inheritedFromServiceUserIds.add(ownerUser.userId.toString());
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
for (const ownerTeam of serviceOwnerTeams) {
|
|
390
|
+
if (ownerTeam.teamId) {
|
|
391
|
+
inheritedFromServiceTeamIds.add(ownerTeam.teamId.toString());
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
const inheritedUserIds: Set<string> = new Set([
|
|
398
|
+
...inheritedFromMonitorUserIds,
|
|
399
|
+
...inheritedFromHostUserIds,
|
|
400
|
+
...inheritedFromKubernetesClusterUserIds,
|
|
401
|
+
...inheritedFromDockerHostUserIds,
|
|
402
|
+
...inheritedFromServiceUserIds,
|
|
403
|
+
]);
|
|
404
|
+
const inheritedTeamIds: Set<string> = new Set([
|
|
405
|
+
...inheritedFromMonitorTeamIds,
|
|
406
|
+
...inheritedFromHostTeamIds,
|
|
407
|
+
...inheritedFromKubernetesClusterTeamIds,
|
|
408
|
+
...inheritedFromDockerHostTeamIds,
|
|
409
|
+
...inheritedFromServiceTeamIds,
|
|
410
|
+
]);
|
|
411
|
+
|
|
412
|
+
if (inheritedUserIds.size > 0 || inheritedTeamIds.size > 0) {
|
|
169
413
|
const inheritNotify: boolean = inheritNotifyMode.value === true;
|
|
170
|
-
for (const id of
|
|
414
|
+
for (const id of inheritedUserIds) {
|
|
171
415
|
usersByNotify.get(inheritNotify)!.add(id);
|
|
172
416
|
allUserIds.add(id);
|
|
173
417
|
}
|
|
174
|
-
for (const id of
|
|
418
|
+
for (const id of inheritedTeamIds) {
|
|
175
419
|
teamsByNotify.get(inheritNotify)!.add(id);
|
|
176
420
|
allTeamIds.add(id);
|
|
177
421
|
}
|
|
@@ -226,6 +470,19 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
226
470
|
inheritedFromMonitors:
|
|
227
471
|
inheritedFromMonitorUserIds.size + inheritedFromMonitorTeamIds.size >
|
|
228
472
|
0,
|
|
473
|
+
inheritedFromHosts:
|
|
474
|
+
inheritedFromHostUserIds.size + inheritedFromHostTeamIds.size > 0,
|
|
475
|
+
inheritedFromKubernetesClusters:
|
|
476
|
+
inheritedFromKubernetesClusterUserIds.size +
|
|
477
|
+
inheritedFromKubernetesClusterTeamIds.size >
|
|
478
|
+
0,
|
|
479
|
+
inheritedFromDockerHosts:
|
|
480
|
+
inheritedFromDockerHostUserIds.size +
|
|
481
|
+
inheritedFromDockerHostTeamIds.size >
|
|
482
|
+
0,
|
|
483
|
+
inheritedFromServices:
|
|
484
|
+
inheritedFromServiceUserIds.size + inheritedFromServiceTeamIds.size >
|
|
485
|
+
0,
|
|
229
486
|
});
|
|
230
487
|
} catch (error) {
|
|
231
488
|
logger.error(
|
|
@@ -245,6 +502,10 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
245
502
|
userIds: Array<string>;
|
|
246
503
|
teamIds: Array<string>;
|
|
247
504
|
inheritedFromMonitors: boolean;
|
|
505
|
+
inheritedFromHosts: boolean;
|
|
506
|
+
inheritedFromKubernetesClusters: boolean;
|
|
507
|
+
inheritedFromDockerHosts: boolean;
|
|
508
|
+
inheritedFromServices: boolean;
|
|
248
509
|
}): Promise<void> {
|
|
249
510
|
const {
|
|
250
511
|
scheduledMaintenance,
|
|
@@ -252,6 +513,10 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
252
513
|
userIds,
|
|
253
514
|
teamIds,
|
|
254
515
|
inheritedFromMonitors,
|
|
516
|
+
inheritedFromHosts,
|
|
517
|
+
inheritedFromKubernetesClusters,
|
|
518
|
+
inheritedFromDockerHosts,
|
|
519
|
+
inheritedFromServices,
|
|
255
520
|
} = data;
|
|
256
521
|
if (
|
|
257
522
|
!scheduledMaintenance.id ||
|
|
@@ -322,9 +587,26 @@ class ScheduledMaintenanceOwnerRuleEngineServiceClass {
|
|
|
322
587
|
? userLines.concat(teamLines).join("")
|
|
323
588
|
: "\n- (no named owners)";
|
|
324
589
|
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
|
|
590
|
+
const inheritedSources: Array<string> = [];
|
|
591
|
+
if (inheritedFromMonitors) {
|
|
592
|
+
inheritedSources.push("monitors");
|
|
593
|
+
}
|
|
594
|
+
if (inheritedFromHosts) {
|
|
595
|
+
inheritedSources.push("hosts");
|
|
596
|
+
}
|
|
597
|
+
if (inheritedFromKubernetesClusters) {
|
|
598
|
+
inheritedSources.push("Kubernetes clusters");
|
|
599
|
+
}
|
|
600
|
+
if (inheritedFromDockerHosts) {
|
|
601
|
+
inheritedSources.push("Docker hosts");
|
|
602
|
+
}
|
|
603
|
+
if (inheritedFromServices) {
|
|
604
|
+
inheritedSources.push("services");
|
|
605
|
+
}
|
|
606
|
+
const inheritedNote: string =
|
|
607
|
+
inheritedSources.length > 0
|
|
608
|
+
? `\n\n_Some owners were inherited from the event's ${inheritedSources.join(", ")}._`
|
|
609
|
+
: "";
|
|
328
610
|
|
|
329
611
|
const feedInfoInMarkdown: string = `🛡️ **Scheduled Maintenance Owner Rule${
|
|
330
612
|
matchedRules.length > 1 ? "s" : ""
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import DatabaseConfig from "../DatabaseConfig";
|
|
2
|
+
import InMemoryTTLCache from "../Infrastructure/InMemoryTTLCache";
|
|
2
3
|
import CreateBy from "../Types/Database/CreateBy";
|
|
3
4
|
import { OnCreate, OnUpdate } from "../Types/Database/Hooks";
|
|
4
5
|
import UpdateBy from "../Types/Database/UpdateBy";
|
|
@@ -87,10 +88,31 @@ export interface StatusPageReport {
|
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
export class Service extends DatabaseService<StatusPage> {
|
|
91
|
+
/*
|
|
92
|
+
* Caches the resolved status page URL per statusPageId. `getStatusPageURL`
|
|
93
|
+
* is called inside per-subscriber notification loops (see
|
|
94
|
+
* `StatusPageSubscriberService`), where a single batch can fire N×
|
|
95
|
+
* Postgres lookups against `StatusPageDomain`. SSL-provisioned custom
|
|
96
|
+
* domains change rarely (provisioning takes minutes), so a 60s staleness
|
|
97
|
+
* window is acceptable. Callers that need stronger consistency can call
|
|
98
|
+
* `clearStatusPageUrlCache` after writes to the underlying domain.
|
|
99
|
+
*/
|
|
100
|
+
private statusPageUrlCache: InMemoryTTLCache<string> = new InMemoryTTLCache(
|
|
101
|
+
10_000,
|
|
102
|
+
);
|
|
103
|
+
|
|
90
104
|
public constructor() {
|
|
91
105
|
super(StatusPage);
|
|
92
106
|
}
|
|
93
107
|
|
|
108
|
+
public clearStatusPageUrlCache(statusPageId?: ObjectID): void {
|
|
109
|
+
if (statusPageId) {
|
|
110
|
+
this.statusPageUrlCache.delete(statusPageId.toString());
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.statusPageUrlCache.clear();
|
|
114
|
+
}
|
|
115
|
+
|
|
94
116
|
public static getDefaultEmailFooterText(): string {
|
|
95
117
|
return "This is an automated email sent to you because you are subscribed to this Status Page.";
|
|
96
118
|
}
|
|
@@ -655,6 +677,12 @@ export class Service extends DatabaseService<StatusPage> {
|
|
|
655
677
|
|
|
656
678
|
@CaptureSpan()
|
|
657
679
|
public async getStatusPageURL(statusPageId: ObjectID): Promise<string> {
|
|
680
|
+
const cacheKey: string = statusPageId.toString();
|
|
681
|
+
const cached: string | undefined = this.statusPageUrlCache.get(cacheKey);
|
|
682
|
+
if (cached !== undefined) {
|
|
683
|
+
return cached;
|
|
684
|
+
}
|
|
685
|
+
|
|
658
686
|
const domain: StatusPageDomain | null =
|
|
659
687
|
await StatusPageDomainService.findOneBy({
|
|
660
688
|
query: {
|
|
@@ -685,6 +713,8 @@ export class Service extends DatabaseService<StatusPage> {
|
|
|
685
713
|
.toString();
|
|
686
714
|
}
|
|
687
715
|
|
|
716
|
+
this.statusPageUrlCache.set(cacheKey, statusPageURL, 60_000);
|
|
717
|
+
|
|
688
718
|
return statusPageURL;
|
|
689
719
|
}
|
|
690
720
|
|