@oneuptime/common 10.4.11 → 10.4.13

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 (117) hide show
  1. package/Models/DatabaseModels/Alert.ts +332 -0
  2. package/Models/DatabaseModels/Incident.ts +332 -0
  3. package/Models/DatabaseModels/RunbookAgent.ts +16 -2
  4. package/Server/EnvironmentConfig.ts +16 -0
  5. package/Server/Infrastructure/ClickhouseConfig.ts +14 -0
  6. package/Server/Infrastructure/ClickhouseDatabase.ts +20 -3
  7. package/Server/Infrastructure/InMemoryTTLCache.ts +61 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.ts +253 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.ts +60 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  11. package/Server/Middleware/TelemetryIngest.ts +6 -38
  12. package/Server/Middleware/UserAuthorization.ts +1 -11
  13. package/Server/Services/AnalyticsDatabaseService.ts +33 -1
  14. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +6 -0
  15. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +1 -0
  16. package/Server/Services/OnCallDutyPolicyScheduleService.ts +17 -0
  17. package/Server/Services/TelemetryIngestionKeyService.ts +90 -1
  18. package/Server/Utils/Monitor/Criteria/DnssecMonitorCriteria.ts +108 -0
  19. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +13 -0
  20. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +25 -0
  21. package/Tests/Server/Middleware/UserAuthorization.test.ts +0 -7
  22. package/Types/Dashboard/DashboardComponentType.ts +0 -1
  23. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  24. package/Types/Dashboard/DashboardComponents/DashboardTableComponent.ts +74 -1
  25. package/Types/Dashboard/DashboardTemplates.ts +164 -51
  26. package/Types/Monitor/CriteriaFilter.ts +13 -0
  27. package/Types/Monitor/DnssecMonitor/DnssecMonitorResponse.ts +69 -0
  28. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  29. package/Types/Monitor/MonitorStep.ts +39 -0
  30. package/Types/Monitor/MonitorStepDnssecMonitor.ts +59 -0
  31. package/Types/Monitor/MonitorType.ts +18 -2
  32. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +36 -9
  33. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  34. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +51 -0
  35. package/Utils/Dashboard/Components/DashboardTableComponent.ts +80 -17
  36. package/Utils/Dashboard/Components/Index.ts +0 -7
  37. package/Utils/Monitor/MonitorMetricType.ts +1 -0
  38. package/build/dist/Models/DatabaseModels/Alert.js +324 -0
  39. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  40. package/build/dist/Models/DatabaseModels/Incident.js +324 -0
  41. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  42. package/build/dist/Models/DatabaseModels/RunbookAgent.js +16 -2
  43. package/build/dist/Models/DatabaseModels/RunbookAgent.js.map +1 -1
  44. package/build/dist/Server/EnvironmentConfig.js +8 -0
  45. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  46. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +9 -1
  47. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  48. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +12 -3
  49. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
  50. package/build/dist/Server/Infrastructure/InMemoryTTLCache.js +49 -0
  51. package/build/dist/Server/Infrastructure/InMemoryTTLCache.js.map +1 -0
  52. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.js +100 -0
  53. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.js.map +1 -0
  54. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.js +28 -0
  55. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.js.map +1 -0
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  57. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  58. package/build/dist/Server/Middleware/TelemetryIngest.js +2 -26
  59. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  60. package/build/dist/Server/Middleware/UserAuthorization.js +1 -7
  61. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  62. package/build/dist/Server/Services/AnalyticsDatabaseService.js +23 -2
  63. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  64. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +28 -24
  65. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  66. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +1 -1
  67. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  68. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +18 -2
  69. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  70. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +83 -0
  71. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  72. package/build/dist/Server/Utils/Monitor/Criteria/DnssecMonitorCriteria.js +94 -0
  73. package/build/dist/Server/Utils/Monitor/Criteria/DnssecMonitorCriteria.js.map +1 -0
  74. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +10 -0
  75. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  76. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +22 -3
  77. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  78. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +0 -7
  79. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
  80. package/build/dist/Types/Dashboard/DashboardComponentType.js +0 -1
  81. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  82. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  83. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  84. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js +13 -1
  85. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js.map +1 -1
  86. package/build/dist/Types/Dashboard/DashboardTemplates.js +142 -42
  87. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  88. package/build/dist/Types/Monitor/CriteriaFilter.js +12 -0
  89. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  90. package/build/dist/Types/Monitor/DnssecMonitor/DnssecMonitorResponse.js +2 -0
  91. package/build/dist/Types/Monitor/DnssecMonitor/DnssecMonitorResponse.js.map +1 -0
  92. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  93. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  94. package/build/dist/Types/Monitor/MonitorStep.js +26 -0
  95. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  96. package/build/dist/Types/Monitor/MonitorStepDnssecMonitor.js +42 -0
  97. package/build/dist/Types/Monitor/MonitorStepDnssecMonitor.js.map +1 -0
  98. package/build/dist/Types/Monitor/MonitorType.js +16 -2
  99. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  100. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +27 -7
  101. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
  102. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +47 -0
  103. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  104. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js +68 -16
  105. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js.map +1 -1
  106. package/build/dist/Utils/Dashboard/Components/Index.js +0 -4
  107. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  108. package/build/dist/Utils/Monitor/MonitorMetricType.js +1 -0
  109. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  110. package/package.json +1 -2
  111. package/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.ts +0 -27
  112. package/Typings/elkjs.d.ts +0 -30
  113. package/Utils/Dashboard/Components/DashboardHostMetricChartComponent.ts +0 -132
  114. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.js +0 -11
  115. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.js.map +0 -1
  116. package/build/dist/Utils/Dashboard/Components/DashboardHostMetricChartComponent.js +0 -113
  117. 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,
@@ -1,13 +1,19 @@
1
+ import DockerHost from "./DockerHost";
2
+ import DockerResource from "./DockerResource";
1
3
  import Host from "./Host";
2
4
  import IncidentEpisode from "./IncidentEpisode";
3
5
  import IncidentSeverity from "./IncidentSeverity";
4
6
  import IncidentState from "./IncidentState";
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 File from "./File";
13
19
  import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
@@ -588,6 +594,332 @@ export default class Incident extends BaseModel {
588
594
  })
589
595
  public hosts?: Array<Host> = undefined; // hosts affected by this incident.
590
596
 
597
+ @ColumnAccessControl({
598
+ create: [
599
+ Permission.ProjectOwner,
600
+ Permission.ProjectAdmin,
601
+ Permission.ProjectMember,
602
+ Permission.IncidentAdmin,
603
+ Permission.IncidentMember,
604
+ Permission.CreateProjectIncident,
605
+ ],
606
+ read: [
607
+ Permission.ProjectOwner,
608
+ Permission.ProjectAdmin,
609
+ Permission.ProjectMember,
610
+ Permission.Viewer,
611
+ Permission.IncidentAdmin,
612
+ Permission.IncidentMember,
613
+ Permission.IncidentViewer,
614
+ Permission.ReadProjectIncident,
615
+ ],
616
+ update: [
617
+ Permission.ProjectOwner,
618
+ Permission.ProjectAdmin,
619
+ Permission.ProjectMember,
620
+ Permission.IncidentAdmin,
621
+ Permission.IncidentMember,
622
+ Permission.EditProjectIncident,
623
+ ],
624
+ })
625
+ @TableColumn({
626
+ required: false,
627
+ type: TableColumnType.EntityArray,
628
+ modelType: KubernetesCluster,
629
+ title: "Kubernetes Clusters",
630
+ description: "List of Kubernetes clusters affected by this incident.",
631
+ })
632
+ @ManyToMany(
633
+ () => {
634
+ return KubernetesCluster;
635
+ },
636
+ { eager: false },
637
+ )
638
+ @JoinTable({
639
+ name: "IncidentKubernetesCluster",
640
+ inverseJoinColumn: {
641
+ name: "kubernetesClusterId",
642
+ referencedColumnName: "_id",
643
+ },
644
+ joinColumn: {
645
+ name: "incidentId",
646
+ referencedColumnName: "_id",
647
+ },
648
+ })
649
+ public kubernetesClusters?: Array<KubernetesCluster> = undefined;
650
+
651
+ @ColumnAccessControl({
652
+ create: [
653
+ Permission.ProjectOwner,
654
+ Permission.ProjectAdmin,
655
+ Permission.ProjectMember,
656
+ Permission.IncidentAdmin,
657
+ Permission.IncidentMember,
658
+ Permission.CreateProjectIncident,
659
+ ],
660
+ read: [
661
+ Permission.ProjectOwner,
662
+ Permission.ProjectAdmin,
663
+ Permission.ProjectMember,
664
+ Permission.Viewer,
665
+ Permission.IncidentAdmin,
666
+ Permission.IncidentMember,
667
+ Permission.IncidentViewer,
668
+ Permission.ReadProjectIncident,
669
+ ],
670
+ update: [
671
+ Permission.ProjectOwner,
672
+ Permission.ProjectAdmin,
673
+ Permission.ProjectMember,
674
+ Permission.IncidentAdmin,
675
+ Permission.IncidentMember,
676
+ Permission.EditProjectIncident,
677
+ ],
678
+ })
679
+ @TableColumn({
680
+ required: false,
681
+ type: TableColumnType.EntityArray,
682
+ modelType: KubernetesResource,
683
+ title: "Kubernetes Resources",
684
+ description:
685
+ "List of Kubernetes resources (pods, deployments, nodes, etc.) affected by this incident.",
686
+ })
687
+ @ManyToMany(
688
+ () => {
689
+ return KubernetesResource;
690
+ },
691
+ { eager: false },
692
+ )
693
+ @JoinTable({
694
+ name: "IncidentKubernetesResource",
695
+ inverseJoinColumn: {
696
+ name: "kubernetesResourceId",
697
+ referencedColumnName: "_id",
698
+ },
699
+ joinColumn: {
700
+ name: "incidentId",
701
+ referencedColumnName: "_id",
702
+ },
703
+ })
704
+ public kubernetesResources?: Array<KubernetesResource> = undefined;
705
+
706
+ @ColumnAccessControl({
707
+ create: [
708
+ Permission.ProjectOwner,
709
+ Permission.ProjectAdmin,
710
+ Permission.ProjectMember,
711
+ Permission.IncidentAdmin,
712
+ Permission.IncidentMember,
713
+ Permission.CreateProjectIncident,
714
+ ],
715
+ read: [
716
+ Permission.ProjectOwner,
717
+ Permission.ProjectAdmin,
718
+ Permission.ProjectMember,
719
+ Permission.Viewer,
720
+ Permission.IncidentAdmin,
721
+ Permission.IncidentMember,
722
+ Permission.IncidentViewer,
723
+ Permission.ReadProjectIncident,
724
+ ],
725
+ update: [
726
+ Permission.ProjectOwner,
727
+ Permission.ProjectAdmin,
728
+ Permission.ProjectMember,
729
+ Permission.IncidentAdmin,
730
+ Permission.IncidentMember,
731
+ Permission.EditProjectIncident,
732
+ ],
733
+ })
734
+ @TableColumn({
735
+ required: false,
736
+ type: TableColumnType.EntityArray,
737
+ modelType: KubernetesContainer,
738
+ title: "Kubernetes Containers",
739
+ description: "List of Kubernetes containers affected by this incident.",
740
+ })
741
+ @ManyToMany(
742
+ () => {
743
+ return KubernetesContainer;
744
+ },
745
+ { eager: false },
746
+ )
747
+ @JoinTable({
748
+ name: "IncidentKubernetesContainer",
749
+ inverseJoinColumn: {
750
+ name: "kubernetesContainerId",
751
+ referencedColumnName: "_id",
752
+ },
753
+ joinColumn: {
754
+ name: "incidentId",
755
+ referencedColumnName: "_id",
756
+ },
757
+ })
758
+ public kubernetesContainers?: Array<KubernetesContainer> = undefined;
759
+
760
+ @ColumnAccessControl({
761
+ create: [
762
+ Permission.ProjectOwner,
763
+ Permission.ProjectAdmin,
764
+ Permission.ProjectMember,
765
+ Permission.IncidentAdmin,
766
+ Permission.IncidentMember,
767
+ Permission.CreateProjectIncident,
768
+ ],
769
+ read: [
770
+ Permission.ProjectOwner,
771
+ Permission.ProjectAdmin,
772
+ Permission.ProjectMember,
773
+ Permission.Viewer,
774
+ Permission.IncidentAdmin,
775
+ Permission.IncidentMember,
776
+ Permission.IncidentViewer,
777
+ Permission.ReadProjectIncident,
778
+ ],
779
+ update: [
780
+ Permission.ProjectOwner,
781
+ Permission.ProjectAdmin,
782
+ Permission.ProjectMember,
783
+ Permission.IncidentAdmin,
784
+ Permission.IncidentMember,
785
+ Permission.EditProjectIncident,
786
+ ],
787
+ })
788
+ @TableColumn({
789
+ required: false,
790
+ type: TableColumnType.EntityArray,
791
+ modelType: DockerHost,
792
+ title: "Docker Hosts",
793
+ description: "List of Docker hosts affected by this incident.",
794
+ })
795
+ @ManyToMany(
796
+ () => {
797
+ return DockerHost;
798
+ },
799
+ { eager: false },
800
+ )
801
+ @JoinTable({
802
+ name: "IncidentDockerHost",
803
+ inverseJoinColumn: {
804
+ name: "dockerHostId",
805
+ referencedColumnName: "_id",
806
+ },
807
+ joinColumn: {
808
+ name: "incidentId",
809
+ referencedColumnName: "_id",
810
+ },
811
+ })
812
+ public dockerHosts?: Array<DockerHost> = undefined;
813
+
814
+ @ColumnAccessControl({
815
+ create: [
816
+ Permission.ProjectOwner,
817
+ Permission.ProjectAdmin,
818
+ Permission.ProjectMember,
819
+ Permission.IncidentAdmin,
820
+ Permission.IncidentMember,
821
+ Permission.CreateProjectIncident,
822
+ ],
823
+ read: [
824
+ Permission.ProjectOwner,
825
+ Permission.ProjectAdmin,
826
+ Permission.ProjectMember,
827
+ Permission.Viewer,
828
+ Permission.IncidentAdmin,
829
+ Permission.IncidentMember,
830
+ Permission.IncidentViewer,
831
+ Permission.ReadProjectIncident,
832
+ ],
833
+ update: [
834
+ Permission.ProjectOwner,
835
+ Permission.ProjectAdmin,
836
+ Permission.ProjectMember,
837
+ Permission.IncidentAdmin,
838
+ Permission.IncidentMember,
839
+ Permission.EditProjectIncident,
840
+ ],
841
+ })
842
+ @TableColumn({
843
+ required: false,
844
+ type: TableColumnType.EntityArray,
845
+ modelType: DockerResource,
846
+ title: "Docker Resources",
847
+ description:
848
+ "List of Docker resources (containers, images, networks, volumes) affected by this incident.",
849
+ })
850
+ @ManyToMany(
851
+ () => {
852
+ return DockerResource;
853
+ },
854
+ { eager: false },
855
+ )
856
+ @JoinTable({
857
+ name: "IncidentDockerResource",
858
+ inverseJoinColumn: {
859
+ name: "dockerResourceId",
860
+ referencedColumnName: "_id",
861
+ },
862
+ joinColumn: {
863
+ name: "incidentId",
864
+ referencedColumnName: "_id",
865
+ },
866
+ })
867
+ public dockerResources?: Array<DockerResource> = undefined;
868
+
869
+ @ColumnAccessControl({
870
+ create: [
871
+ Permission.ProjectOwner,
872
+ Permission.ProjectAdmin,
873
+ Permission.ProjectMember,
874
+ Permission.IncidentAdmin,
875
+ Permission.IncidentMember,
876
+ Permission.CreateProjectIncident,
877
+ ],
878
+ read: [
879
+ Permission.ProjectOwner,
880
+ Permission.ProjectAdmin,
881
+ Permission.ProjectMember,
882
+ Permission.Viewer,
883
+ Permission.IncidentAdmin,
884
+ Permission.IncidentMember,
885
+ Permission.IncidentViewer,
886
+ Permission.ReadProjectIncident,
887
+ ],
888
+ update: [
889
+ Permission.ProjectOwner,
890
+ Permission.ProjectAdmin,
891
+ Permission.ProjectMember,
892
+ Permission.IncidentAdmin,
893
+ Permission.IncidentMember,
894
+ Permission.EditProjectIncident,
895
+ ],
896
+ })
897
+ @TableColumn({
898
+ required: false,
899
+ type: TableColumnType.EntityArray,
900
+ modelType: Service,
901
+ title: "Services",
902
+ description: "List of services affected by this incident.",
903
+ })
904
+ @ManyToMany(
905
+ () => {
906
+ return Service;
907
+ },
908
+ { eager: false },
909
+ )
910
+ @JoinTable({
911
+ name: "IncidentService",
912
+ inverseJoinColumn: {
913
+ name: "serviceId",
914
+ referencedColumnName: "_id",
915
+ },
916
+ joinColumn: {
917
+ name: "incidentId",
918
+ referencedColumnName: "_id",
919
+ },
920
+ })
921
+ public services?: Array<Service> = undefined;
922
+
591
923
  @ColumnAccessControl({
592
924
  create: [
593
925
  Permission.ProjectOwner,