incident.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package types
  2. import "time"
  3. const URLParamIncidentID URLParam = "incident_id"
  4. type SeverityType string
  5. const (
  6. SeverityCritical SeverityType = "critical"
  7. SeverityNormal SeverityType = "normal"
  8. )
  9. type InvolvedObjectKind string
  10. const (
  11. InvolvedObjectDeployment InvolvedObjectKind = "deployment"
  12. InvolvedObjectJob InvolvedObjectKind = "job"
  13. InvolvedObjectPod InvolvedObjectKind = "pod"
  14. )
  15. type IncidentStatus string
  16. const (
  17. IncidentStatusResolved IncidentStatus = "resolved"
  18. IncidentStatusActive IncidentStatus = "active"
  19. )
  20. type IncidentMeta struct {
  21. ID string `json:"id" form:"required"`
  22. ReleaseName string `json:"release_name" form:"required"`
  23. ReleaseNamespace string `json:"release_namespace" form:"required"`
  24. ChartName string `json:"chart_name" form:"required"`
  25. CreatedAt time.Time `json:"created_at" form:"required"`
  26. UpdatedAt time.Time `json:"updated_at" form:"required"`
  27. LastSeen *time.Time `json:"last_seen" form:"required"`
  28. Status IncidentStatus `json:"status" form:"required"`
  29. Summary string `json:"summary" form:"required"`
  30. ShortSummary string `json:"short_summary"`
  31. Severity SeverityType `json:"severity" form:"required"`
  32. InvolvedObjectKind InvolvedObjectKind `json:"involved_object_kind" form:"required"`
  33. InvolvedObjectName string `json:"involved_object_name" form:"required"`
  34. InvolvedObjectNamespace string `json:"involved_object_namespace" form:"required"`
  35. }
  36. type PaginationRequest struct {
  37. Page int64 `schema:"page"`
  38. }
  39. type PaginationResponse struct {
  40. NumPages int64 `json:"num_pages" form:"required"`
  41. CurrentPage int64 `json:"current_page" form:"required"`
  42. NextPage int64 `json:"next_page" form:"required"`
  43. }
  44. type ListIncidentsRequest struct {
  45. *PaginationRequest
  46. Status *IncidentStatus `schema:"status"`
  47. ReleaseName *string `schema:"release_name"`
  48. ReleaseNamespace *string `schema:"release_namespace"`
  49. }
  50. type ListIncidentsResponse struct {
  51. Incidents []*IncidentMeta `json:"incidents" form:"required"`
  52. Pagination *PaginationResponse `json:"pagination"`
  53. }
  54. type GetIncidentResponse *Incident
  55. type Incident struct {
  56. *IncidentMeta
  57. Pods []string `json:"pods" form:"required"`
  58. Detail string `json:"detail" form:"required"`
  59. }
  60. type IncidentEvent struct {
  61. ID string `json:"id" form:"required"`
  62. LastSeen *time.Time `json:"last_seen" form:"required"`
  63. PodName string `json:"pod_name" form:"required"`
  64. PodNamespace string `json:"pod_namespace" form:"required"`
  65. Summary string `json:"summary" form:"required"`
  66. Detail string `json:"detail" form:"required"`
  67. Revision string `json:"revision"`
  68. }
  69. type ListIncidentEventsRequest struct {
  70. *PaginationRequest
  71. PodName *string `schema:"pod_name"`
  72. PodNamespace *string `schema:"pod_namespace"`
  73. Summary *string `schema:"summary"`
  74. }
  75. type ListIncidentEventsResponse struct {
  76. Events []*IncidentEvent `json:"events" form:"required"`
  77. Pagination *PaginationResponse `json:"pagination"`
  78. }
  79. type GetLogRequest struct {
  80. Limit uint `schema:"limit"`
  81. StartRange *time.Time `schema:"start_range"`
  82. EndRange *time.Time `schema:"end_range"`
  83. SearchParam string `schema:"search_param"`
  84. PodSelector string `schema:"pod_selector" form:"required"`
  85. Namespace string `schema:"namespace" form:"required"`
  86. Direction string `schema:"direction"`
  87. }
  88. type GetPodValuesRequest struct {
  89. StartRange *time.Time `schema:"start_range"`
  90. EndRange *time.Time `schema:"end_range"`
  91. MatchPrefix string `schema:"match_prefix"`
  92. }
  93. type LogLine struct {
  94. Timestamp *time.Time `json:"timestamp"`
  95. Line string `json:"line"`
  96. }
  97. type GetLogResponse struct {
  98. BackwardContinueTime *time.Time `json:"backward_continue_time"`
  99. ForwardContinueTime *time.Time `json:"forward_continue_time"`
  100. Logs []LogLine `json:"logs"`
  101. }
  102. type GetEventRequest struct {
  103. Limit uint `schema:"limit"`
  104. StartRange *time.Time `schema:"start_range"`
  105. EndRange *time.Time `schema:"end_range"`
  106. PodSelector string `schema:"pod_selector" form:"required"`
  107. Namespace string `schema:"namespace" form:"required"`
  108. }
  109. type EventLine struct {
  110. Timestamp *time.Time `json:"timestamp"`
  111. Event string `json:"event"`
  112. }
  113. type GetEventResponse struct {
  114. ContinueTime *time.Time `json:"continue_time"`
  115. Events []EventLine `json:"events"`
  116. }