@oneuptime/common 10.4.10 → 10.4.12

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.
Files changed (174) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +47 -1
  2. package/Models/AnalyticsModels/Log.ts +47 -1
  3. package/Models/AnalyticsModels/Metric.ts +1 -7
  4. package/Models/AnalyticsModels/Profile.ts +47 -1
  5. package/Models/AnalyticsModels/ProfileSample.ts +47 -1
  6. package/Models/AnalyticsModels/Span.ts +47 -1
  7. package/Models/DatabaseModels/Alert.ts +332 -0
  8. package/Models/DatabaseModels/DockerHost.ts +83 -0
  9. package/Models/DatabaseModels/Host.ts +83 -0
  10. package/Models/DatabaseModels/Incident.ts +332 -0
  11. package/Models/DatabaseModels/Index.ts +0 -2
  12. package/Models/DatabaseModels/KubernetesCluster.ts +83 -0
  13. package/Models/DatabaseModels/RunbookAgent.ts +16 -2
  14. package/Server/EnvironmentConfig.ts +16 -0
  15. package/Server/Infrastructure/ClickhouseConfig.ts +14 -0
  16. package/Server/Infrastructure/ClickhouseDatabase.ts +20 -3
  17. package/Server/Infrastructure/InMemoryTTLCache.ts +61 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.ts +1 -1
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.ts +44 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.ts +50 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.ts +253 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.ts +60 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  24. package/Server/Middleware/TelemetryIngest.ts +6 -38
  25. package/Server/Middleware/UserAuthorization.ts +1 -11
  26. package/Server/Services/AlertService.ts +2 -4
  27. package/Server/Services/AnalyticsDatabaseService.ts +33 -1
  28. package/Server/Services/IncidentService.ts +2 -4
  29. package/Server/Services/Index.ts +0 -2
  30. package/Server/Services/LogAggregationService.ts +54 -6
  31. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +6 -0
  32. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +1 -0
  33. package/Server/Services/OnCallDutyPolicyScheduleService.ts +17 -0
  34. package/Server/Services/OpenTelemetryIngestService.ts +132 -0
  35. package/Server/Services/TelemetryIngestionKeyService.ts +90 -1
  36. package/Server/Services/TraceAggregationService.ts +83 -8
  37. package/Server/Utils/Monitor/MonitorMetricUtil.ts +2 -4
  38. package/Server/Utils/Telemetry/Telemetry.ts +38 -0
  39. package/Tests/Server/Middleware/UserAuthorization.test.ts +5 -7
  40. package/Types/Dashboard/DashboardComponentType.ts +0 -1
  41. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  42. package/Types/Dashboard/DashboardComponents/DashboardTableComponent.ts +74 -1
  43. package/Types/Dashboard/DashboardTemplates.ts +164 -51
  44. package/Types/Monitor/MonitorType.ts +1 -1
  45. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +36 -9
  46. package/Types/Permission.ts +0 -46
  47. package/Types/Telemetry/ServiceType.ts +19 -0
  48. package/UI/Components/Forms/Validation.ts +2 -2
  49. package/UI/Components/LogsViewer/LogsViewer.tsx +135 -17
  50. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +84 -1
  51. package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +0 -1
  52. package/Utils/Dashboard/Components/DashboardTableComponent.ts +80 -17
  53. package/Utils/Dashboard/Components/Index.ts +0 -7
  54. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +41 -1
  55. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  56. package/build/dist/Models/AnalyticsModels/Log.js +41 -1
  57. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  58. package/build/dist/Models/AnalyticsModels/Metric.js +0 -7
  59. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  60. package/build/dist/Models/AnalyticsModels/Profile.js +41 -1
  61. package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
  62. package/build/dist/Models/AnalyticsModels/ProfileSample.js +41 -1
  63. package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
  64. package/build/dist/Models/AnalyticsModels/Span.js +41 -1
  65. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  66. package/build/dist/Models/DatabaseModels/Alert.js +324 -0
  67. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  68. package/build/dist/Models/DatabaseModels/DockerHost.js +84 -0
  69. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  70. package/build/dist/Models/DatabaseModels/Host.js +84 -0
  71. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  72. package/build/dist/Models/DatabaseModels/Incident.js +324 -0
  73. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  74. package/build/dist/Models/DatabaseModels/Index.js +0 -2
  75. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  76. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +84 -0
  77. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
  78. package/build/dist/Models/DatabaseModels/RunbookAgent.js +16 -2
  79. package/build/dist/Models/DatabaseModels/RunbookAgent.js.map +1 -1
  80. package/build/dist/Server/EnvironmentConfig.js +8 -0
  81. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  82. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +9 -1
  83. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  84. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +12 -3
  85. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
  86. package/build/dist/Server/Infrastructure/InMemoryTTLCache.js +49 -0
  87. package/build/dist/Server/Infrastructure/InMemoryTTLCache.js.map +1 -0
  88. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.js.map +1 -1
  89. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js +42 -0
  90. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js.map +1 -0
  91. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js +22 -0
  92. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js.map +1 -0
  93. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.js +100 -0
  94. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.js.map +1 -0
  95. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.js +28 -0
  96. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.js.map +1 -0
  97. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  98. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  99. package/build/dist/Server/Middleware/TelemetryIngest.js +2 -26
  100. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  101. package/build/dist/Server/Middleware/UserAuthorization.js +1 -7
  102. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  103. package/build/dist/Server/Services/AlertService.js +2 -1
  104. package/build/dist/Server/Services/AlertService.js.map +1 -1
  105. package/build/dist/Server/Services/AnalyticsDatabaseService.js +23 -2
  106. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  107. package/build/dist/Server/Services/IncidentService.js +2 -1
  108. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  109. package/build/dist/Server/Services/Index.js +0 -2
  110. package/build/dist/Server/Services/Index.js.map +1 -1
  111. package/build/dist/Server/Services/LogAggregationService.js +46 -4
  112. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  113. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +28 -24
  114. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  115. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +1 -1
  116. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  117. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +18 -2
  118. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  119. package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -0
  120. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  121. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +83 -0
  122. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  123. package/build/dist/Server/Services/TraceAggregationService.js +66 -6
  124. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  125. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +2 -1
  126. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  127. package/build/dist/Server/Utils/Telemetry/Telemetry.js +26 -0
  128. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  129. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +3 -7
  130. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
  131. package/build/dist/Types/Dashboard/DashboardComponentType.js +0 -1
  132. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  133. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  134. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  135. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js +13 -1
  136. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js.map +1 -1
  137. package/build/dist/Types/Dashboard/DashboardTemplates.js +142 -42
  138. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  139. package/build/dist/Types/Monitor/MonitorType.js +1 -1
  140. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  141. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +27 -7
  142. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
  143. package/build/dist/Types/Permission.js +0 -40
  144. package/build/dist/Types/Permission.js.map +1 -1
  145. package/build/dist/Types/Telemetry/ServiceType.js +20 -0
  146. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -0
  147. package/build/dist/UI/Components/Forms/Validation.js +2 -2
  148. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  149. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +106 -16
  150. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  151. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +67 -1
  152. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  153. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
  154. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js +68 -16
  155. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js.map +1 -1
  156. package/build/dist/Utils/Dashboard/Components/Index.js +0 -4
  157. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  158. package/package.json +1 -2
  159. package/Models/DatabaseModels/ServiceDependency.ts +0 -529
  160. package/Server/Services/ServiceDependencyService.ts +0 -48
  161. package/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.ts +0 -27
  162. package/Typings/elkjs.d.ts +0 -30
  163. package/UI/Components/Graphs/ServiceDependencyGraph.tsx +0 -286
  164. package/Utils/Dashboard/Components/DashboardHostMetricChartComponent.ts +0 -132
  165. package/build/dist/Models/DatabaseModels/ServiceDependency.js +0 -545
  166. package/build/dist/Models/DatabaseModels/ServiceDependency.js.map +0 -1
  167. package/build/dist/Server/Services/ServiceDependencyService.js +0 -47
  168. package/build/dist/Server/Services/ServiceDependencyService.js.map +0 -1
  169. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.js +0 -11
  170. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.js.map +0 -1
  171. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js +0 -206
  172. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js.map +0 -1
  173. package/build/dist/Utils/Dashboard/Components/DashboardHostMetricChartComponent.js +0 -113
  174. package/build/dist/Utils/Dashboard/Components/DashboardHostMetricChartComponent.js.map +0 -1
@@ -1,13 +1,19 @@
1
1
  import AlertEpisode from "./AlertEpisode";
2
2
  import AlertSeverity from "./AlertSeverity";
3
3
  import AlertState from "./AlertState";
4
+ import DockerHost from "./DockerHost";
5
+ import DockerResource from "./DockerResource";
4
6
  import Host from "./Host";
7
+ import KubernetesCluster from "./KubernetesCluster";
8
+ import KubernetesContainer from "./KubernetesContainer";
9
+ import KubernetesResource from "./KubernetesResource";
5
10
  import Label from "./Label";
6
11
  import Monitor from "./Monitor";
7
12
  import MonitorStatus from "./MonitorStatus";
8
13
  import OnCallDutyPolicy from "./OnCallDutyPolicy";
9
14
  import Probe from "./Probe";
10
15
  import Project from "./Project";
16
+ import Service from "./Service";
11
17
  import User from "./User";
12
18
  import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
13
19
  import Route from "../../Types/API/Route";
@@ -598,6 +604,332 @@ export default class Alert extends BaseModel {
598
604
  })
599
605
  public hosts?: Array<Host> = undefined; // hosts affected by this alert.
600
606
 
607
+ @ColumnAccessControl({
608
+ create: [
609
+ Permission.ProjectOwner,
610
+ Permission.ProjectAdmin,
611
+ Permission.ProjectMember,
612
+ Permission.AlertAdmin,
613
+ Permission.AlertMember,
614
+ Permission.CreateAlert,
615
+ ],
616
+ read: [
617
+ Permission.ProjectOwner,
618
+ Permission.ProjectAdmin,
619
+ Permission.ProjectMember,
620
+ Permission.Viewer,
621
+ Permission.AlertAdmin,
622
+ Permission.AlertMember,
623
+ Permission.AlertViewer,
624
+ Permission.ReadAlert,
625
+ ],
626
+ update: [
627
+ Permission.ProjectOwner,
628
+ Permission.ProjectAdmin,
629
+ Permission.ProjectMember,
630
+ Permission.AlertAdmin,
631
+ Permission.AlertMember,
632
+ Permission.EditAlert,
633
+ ],
634
+ })
635
+ @TableColumn({
636
+ required: false,
637
+ type: TableColumnType.EntityArray,
638
+ modelType: KubernetesCluster,
639
+ title: "Kubernetes Clusters",
640
+ description: "List of Kubernetes clusters affected by this alert.",
641
+ })
642
+ @ManyToMany(
643
+ () => {
644
+ return KubernetesCluster;
645
+ },
646
+ { eager: false },
647
+ )
648
+ @JoinTable({
649
+ name: "AlertKubernetesCluster",
650
+ inverseJoinColumn: {
651
+ name: "kubernetesClusterId",
652
+ referencedColumnName: "_id",
653
+ },
654
+ joinColumn: {
655
+ name: "alertId",
656
+ referencedColumnName: "_id",
657
+ },
658
+ })
659
+ public kubernetesClusters?: Array<KubernetesCluster> = undefined;
660
+
661
+ @ColumnAccessControl({
662
+ create: [
663
+ Permission.ProjectOwner,
664
+ Permission.ProjectAdmin,
665
+ Permission.ProjectMember,
666
+ Permission.AlertAdmin,
667
+ Permission.AlertMember,
668
+ Permission.CreateAlert,
669
+ ],
670
+ read: [
671
+ Permission.ProjectOwner,
672
+ Permission.ProjectAdmin,
673
+ Permission.ProjectMember,
674
+ Permission.Viewer,
675
+ Permission.AlertAdmin,
676
+ Permission.AlertMember,
677
+ Permission.AlertViewer,
678
+ Permission.ReadAlert,
679
+ ],
680
+ update: [
681
+ Permission.ProjectOwner,
682
+ Permission.ProjectAdmin,
683
+ Permission.ProjectMember,
684
+ Permission.AlertAdmin,
685
+ Permission.AlertMember,
686
+ Permission.EditAlert,
687
+ ],
688
+ })
689
+ @TableColumn({
690
+ required: false,
691
+ type: TableColumnType.EntityArray,
692
+ modelType: KubernetesResource,
693
+ title: "Kubernetes Resources",
694
+ description:
695
+ "List of Kubernetes resources (pods, deployments, nodes, etc.) affected by this alert.",
696
+ })
697
+ @ManyToMany(
698
+ () => {
699
+ return KubernetesResource;
700
+ },
701
+ { eager: false },
702
+ )
703
+ @JoinTable({
704
+ name: "AlertKubernetesResource",
705
+ inverseJoinColumn: {
706
+ name: "kubernetesResourceId",
707
+ referencedColumnName: "_id",
708
+ },
709
+ joinColumn: {
710
+ name: "alertId",
711
+ referencedColumnName: "_id",
712
+ },
713
+ })
714
+ public kubernetesResources?: Array<KubernetesResource> = undefined;
715
+
716
+ @ColumnAccessControl({
717
+ create: [
718
+ Permission.ProjectOwner,
719
+ Permission.ProjectAdmin,
720
+ Permission.ProjectMember,
721
+ Permission.AlertAdmin,
722
+ Permission.AlertMember,
723
+ Permission.CreateAlert,
724
+ ],
725
+ read: [
726
+ Permission.ProjectOwner,
727
+ Permission.ProjectAdmin,
728
+ Permission.ProjectMember,
729
+ Permission.Viewer,
730
+ Permission.AlertAdmin,
731
+ Permission.AlertMember,
732
+ Permission.AlertViewer,
733
+ Permission.ReadAlert,
734
+ ],
735
+ update: [
736
+ Permission.ProjectOwner,
737
+ Permission.ProjectAdmin,
738
+ Permission.ProjectMember,
739
+ Permission.AlertAdmin,
740
+ Permission.AlertMember,
741
+ Permission.EditAlert,
742
+ ],
743
+ })
744
+ @TableColumn({
745
+ required: false,
746
+ type: TableColumnType.EntityArray,
747
+ modelType: KubernetesContainer,
748
+ title: "Kubernetes Containers",
749
+ description: "List of Kubernetes containers affected by this alert.",
750
+ })
751
+ @ManyToMany(
752
+ () => {
753
+ return KubernetesContainer;
754
+ },
755
+ { eager: false },
756
+ )
757
+ @JoinTable({
758
+ name: "AlertKubernetesContainer",
759
+ inverseJoinColumn: {
760
+ name: "kubernetesContainerId",
761
+ referencedColumnName: "_id",
762
+ },
763
+ joinColumn: {
764
+ name: "alertId",
765
+ referencedColumnName: "_id",
766
+ },
767
+ })
768
+ public kubernetesContainers?: Array<KubernetesContainer> = undefined;
769
+
770
+ @ColumnAccessControl({
771
+ create: [
772
+ Permission.ProjectOwner,
773
+ Permission.ProjectAdmin,
774
+ Permission.ProjectMember,
775
+ Permission.AlertAdmin,
776
+ Permission.AlertMember,
777
+ Permission.CreateAlert,
778
+ ],
779
+ read: [
780
+ Permission.ProjectOwner,
781
+ Permission.ProjectAdmin,
782
+ Permission.ProjectMember,
783
+ Permission.Viewer,
784
+ Permission.AlertAdmin,
785
+ Permission.AlertMember,
786
+ Permission.AlertViewer,
787
+ Permission.ReadAlert,
788
+ ],
789
+ update: [
790
+ Permission.ProjectOwner,
791
+ Permission.ProjectAdmin,
792
+ Permission.ProjectMember,
793
+ Permission.AlertAdmin,
794
+ Permission.AlertMember,
795
+ Permission.EditAlert,
796
+ ],
797
+ })
798
+ @TableColumn({
799
+ required: false,
800
+ type: TableColumnType.EntityArray,
801
+ modelType: DockerHost,
802
+ title: "Docker Hosts",
803
+ description: "List of Docker hosts affected by this alert.",
804
+ })
805
+ @ManyToMany(
806
+ () => {
807
+ return DockerHost;
808
+ },
809
+ { eager: false },
810
+ )
811
+ @JoinTable({
812
+ name: "AlertDockerHost",
813
+ inverseJoinColumn: {
814
+ name: "dockerHostId",
815
+ referencedColumnName: "_id",
816
+ },
817
+ joinColumn: {
818
+ name: "alertId",
819
+ referencedColumnName: "_id",
820
+ },
821
+ })
822
+ public dockerHosts?: Array<DockerHost> = undefined;
823
+
824
+ @ColumnAccessControl({
825
+ create: [
826
+ Permission.ProjectOwner,
827
+ Permission.ProjectAdmin,
828
+ Permission.ProjectMember,
829
+ Permission.AlertAdmin,
830
+ Permission.AlertMember,
831
+ Permission.CreateAlert,
832
+ ],
833
+ read: [
834
+ Permission.ProjectOwner,
835
+ Permission.ProjectAdmin,
836
+ Permission.ProjectMember,
837
+ Permission.Viewer,
838
+ Permission.AlertAdmin,
839
+ Permission.AlertMember,
840
+ Permission.AlertViewer,
841
+ Permission.ReadAlert,
842
+ ],
843
+ update: [
844
+ Permission.ProjectOwner,
845
+ Permission.ProjectAdmin,
846
+ Permission.ProjectMember,
847
+ Permission.AlertAdmin,
848
+ Permission.AlertMember,
849
+ Permission.EditAlert,
850
+ ],
851
+ })
852
+ @TableColumn({
853
+ required: false,
854
+ type: TableColumnType.EntityArray,
855
+ modelType: DockerResource,
856
+ title: "Docker Resources",
857
+ description:
858
+ "List of Docker resources (containers, images, networks, volumes) affected by this alert.",
859
+ })
860
+ @ManyToMany(
861
+ () => {
862
+ return DockerResource;
863
+ },
864
+ { eager: false },
865
+ )
866
+ @JoinTable({
867
+ name: "AlertDockerResource",
868
+ inverseJoinColumn: {
869
+ name: "dockerResourceId",
870
+ referencedColumnName: "_id",
871
+ },
872
+ joinColumn: {
873
+ name: "alertId",
874
+ referencedColumnName: "_id",
875
+ },
876
+ })
877
+ public dockerResources?: Array<DockerResource> = undefined;
878
+
879
+ @ColumnAccessControl({
880
+ create: [
881
+ Permission.ProjectOwner,
882
+ Permission.ProjectAdmin,
883
+ Permission.ProjectMember,
884
+ Permission.AlertAdmin,
885
+ Permission.AlertMember,
886
+ Permission.CreateAlert,
887
+ ],
888
+ read: [
889
+ Permission.ProjectOwner,
890
+ Permission.ProjectAdmin,
891
+ Permission.ProjectMember,
892
+ Permission.Viewer,
893
+ Permission.AlertAdmin,
894
+ Permission.AlertMember,
895
+ Permission.AlertViewer,
896
+ Permission.ReadAlert,
897
+ ],
898
+ update: [
899
+ Permission.ProjectOwner,
900
+ Permission.ProjectAdmin,
901
+ Permission.ProjectMember,
902
+ Permission.AlertAdmin,
903
+ Permission.AlertMember,
904
+ Permission.EditAlert,
905
+ ],
906
+ })
907
+ @TableColumn({
908
+ required: false,
909
+ type: TableColumnType.EntityArray,
910
+ modelType: Service,
911
+ title: "Services",
912
+ description: "List of services affected by this alert.",
913
+ })
914
+ @ManyToMany(
915
+ () => {
916
+ return Service;
917
+ },
918
+ { eager: false },
919
+ )
920
+ @JoinTable({
921
+ name: "AlertService",
922
+ inverseJoinColumn: {
923
+ name: "serviceId",
924
+ referencedColumnName: "_id",
925
+ },
926
+ joinColumn: {
927
+ name: "alertId",
928
+ referencedColumnName: "_id",
929
+ },
930
+ })
931
+ public services?: Array<Service> = undefined;
932
+
601
933
  @ColumnAccessControl({
602
934
  create: [
603
935
  Permission.ProjectOwner,
@@ -19,6 +19,7 @@ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
19
19
  import IconProp from "../../Types/Icon/IconProp";
20
20
  import ObjectID from "../../Types/ObjectID";
21
21
  import Permission from "../../Types/Permission";
22
+ import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
22
23
  import {
23
24
  Column,
24
25
  Entity,
@@ -739,4 +740,86 @@ export default class DockerHost extends BaseModel {
739
740
  },
740
741
  })
741
742
  public labels?: Array<Label> = undefined;
743
+
744
+ @ColumnAccessControl({
745
+ create: [
746
+ Permission.ProjectOwner,
747
+ Permission.ProjectAdmin,
748
+ Permission.ProjectMember,
749
+ Permission.SettingsAdmin,
750
+ Permission.SettingsMember,
751
+ Permission.CreateDockerHost,
752
+ ],
753
+ read: [
754
+ Permission.ProjectOwner,
755
+ Permission.ProjectAdmin,
756
+ Permission.ProjectMember,
757
+ Permission.Viewer,
758
+ Permission.SettingsAdmin,
759
+ Permission.SettingsMember,
760
+ Permission.SettingsViewer,
761
+ Permission.ReadDockerHost,
762
+ ],
763
+ update: [
764
+ Permission.ProjectOwner,
765
+ Permission.ProjectAdmin,
766
+ Permission.ProjectMember,
767
+ Permission.SettingsAdmin,
768
+ Permission.SettingsMember,
769
+ Permission.EditDockerHost,
770
+ ],
771
+ })
772
+ @TableColumn({
773
+ type: TableColumnType.Number,
774
+ title: "Retain Telemetry Data For Days",
775
+ description:
776
+ "Number of days to retain telemetry data for this Docker host. Leave blank to use the project-wide default.",
777
+ })
778
+ @Column({
779
+ type: ColumnType.Number,
780
+ nullable: true,
781
+ unique: false,
782
+ })
783
+ public retainTelemetryDataForDays?: number = undefined;
784
+
785
+ @ColumnAccessControl({
786
+ create: [
787
+ Permission.ProjectOwner,
788
+ Permission.ProjectAdmin,
789
+ Permission.ProjectMember,
790
+ Permission.SettingsAdmin,
791
+ Permission.SettingsMember,
792
+ Permission.CreateDockerHost,
793
+ ],
794
+ read: [
795
+ Permission.ProjectOwner,
796
+ Permission.ProjectAdmin,
797
+ Permission.ProjectMember,
798
+ Permission.Viewer,
799
+ Permission.SettingsAdmin,
800
+ Permission.SettingsMember,
801
+ Permission.SettingsViewer,
802
+ Permission.ReadDockerHost,
803
+ ],
804
+ update: [
805
+ Permission.ProjectOwner,
806
+ Permission.ProjectAdmin,
807
+ Permission.ProjectMember,
808
+ Permission.SettingsAdmin,
809
+ Permission.SettingsMember,
810
+ Permission.EditDockerHost,
811
+ ],
812
+ })
813
+ @TableColumn({
814
+ type: TableColumnType.JSON,
815
+ required: false,
816
+ title: "Telemetry Data Retention Overrides",
817
+ description:
818
+ "Per-pillar retention overrides for this Docker host (logs by severity, traces by status, metrics, profiles). Unset fields fall back to the Docker host default, then the project's retention settings.",
819
+ })
820
+ @Column({
821
+ type: ColumnType.JSON,
822
+ nullable: true,
823
+ })
824
+ public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
742
825
  }
@@ -21,6 +21,7 @@ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
21
21
  import IconProp from "../../Types/Icon/IconProp";
22
22
  import ObjectID from "../../Types/ObjectID";
23
23
  import Permission from "../../Types/Permission";
24
+ import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
24
25
  import {
25
26
  Column,
26
27
  Entity,
@@ -1055,4 +1056,86 @@ export default class Host extends BaseModel {
1055
1056
  },
1056
1057
  })
1057
1058
  public labels?: Array<Label> = undefined;
1059
+
1060
+ @ColumnAccessControl({
1061
+ create: [
1062
+ Permission.ProjectOwner,
1063
+ Permission.ProjectAdmin,
1064
+ Permission.ProjectMember,
1065
+ Permission.SettingsAdmin,
1066
+ Permission.SettingsMember,
1067
+ Permission.CreateHost,
1068
+ ],
1069
+ read: [
1070
+ Permission.ProjectOwner,
1071
+ Permission.ProjectAdmin,
1072
+ Permission.ProjectMember,
1073
+ Permission.Viewer,
1074
+ Permission.SettingsAdmin,
1075
+ Permission.SettingsMember,
1076
+ Permission.SettingsViewer,
1077
+ Permission.ReadHost,
1078
+ ],
1079
+ update: [
1080
+ Permission.ProjectOwner,
1081
+ Permission.ProjectAdmin,
1082
+ Permission.ProjectMember,
1083
+ Permission.SettingsAdmin,
1084
+ Permission.SettingsMember,
1085
+ Permission.EditHost,
1086
+ ],
1087
+ })
1088
+ @TableColumn({
1089
+ type: TableColumnType.Number,
1090
+ title: "Retain Telemetry Data For Days",
1091
+ description:
1092
+ "Number of days to retain telemetry data for this host. Leave blank to use the project-wide default.",
1093
+ })
1094
+ @Column({
1095
+ type: ColumnType.Number,
1096
+ nullable: true,
1097
+ unique: false,
1098
+ })
1099
+ public retainTelemetryDataForDays?: number = undefined;
1100
+
1101
+ @ColumnAccessControl({
1102
+ create: [
1103
+ Permission.ProjectOwner,
1104
+ Permission.ProjectAdmin,
1105
+ Permission.ProjectMember,
1106
+ Permission.SettingsAdmin,
1107
+ Permission.SettingsMember,
1108
+ Permission.CreateHost,
1109
+ ],
1110
+ read: [
1111
+ Permission.ProjectOwner,
1112
+ Permission.ProjectAdmin,
1113
+ Permission.ProjectMember,
1114
+ Permission.Viewer,
1115
+ Permission.SettingsAdmin,
1116
+ Permission.SettingsMember,
1117
+ Permission.SettingsViewer,
1118
+ Permission.ReadHost,
1119
+ ],
1120
+ update: [
1121
+ Permission.ProjectOwner,
1122
+ Permission.ProjectAdmin,
1123
+ Permission.ProjectMember,
1124
+ Permission.SettingsAdmin,
1125
+ Permission.SettingsMember,
1126
+ Permission.EditHost,
1127
+ ],
1128
+ })
1129
+ @TableColumn({
1130
+ type: TableColumnType.JSON,
1131
+ required: false,
1132
+ title: "Telemetry Data Retention Overrides",
1133
+ description:
1134
+ "Per-pillar retention overrides for this host (logs by severity, traces by status, metrics, profiles). Unset fields fall back to the host default, then the project's retention settings.",
1135
+ })
1136
+ @Column({
1137
+ type: ColumnType.JSON,
1138
+ nullable: true,
1139
+ })
1140
+ public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
1058
1141
  }