incident.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. ShouldViewLogs bool `json:"should_view_logs"`
  36. }
  37. type PaginationRequest struct {
  38. Page int64 `schema:"page"`
  39. }
  40. type PaginationResponse struct {
  41. NumPages int64 `json:"num_pages" form:"required"`
  42. CurrentPage int64 `json:"current_page" form:"required"`
  43. NextPage int64 `json:"next_page" form:"required"`
  44. }
  45. type ListIncidentsRequest struct {
  46. *PaginationRequest
  47. Status *IncidentStatus `schema:"status"`
  48. ReleaseName *string `schema:"release_name"`
  49. ReleaseNamespace *string `schema:"release_namespace"`
  50. }
  51. type ListIncidentsResponse struct {
  52. Incidents []*IncidentMeta `json:"incidents" form:"required"`
  53. Pagination *PaginationResponse `json:"pagination"`
  54. }
  55. type GetIncidentResponse *Incident
  56. type Incident struct {
  57. *IncidentMeta
  58. Pods []string `json:"pods" form:"required"`
  59. Detail string `json:"detail" form:"required"`
  60. }
  61. type IncidentEvent struct {
  62. ID string `json:"id" form:"required"`
  63. LastSeen *time.Time `json:"last_seen" form:"required"`
  64. PodName string `json:"pod_name" form:"required"`
  65. PodNamespace string `json:"pod_namespace" form:"required"`
  66. Summary string `json:"summary" form:"required"`
  67. Detail string `json:"detail" form:"required"`
  68. Revision string `json:"revision"`
  69. }
  70. type ListIncidentEventsRequest struct {
  71. *PaginationRequest
  72. IncidentID *string `schema:"incident_id"`
  73. PodName *string `schema:"pod_name"`
  74. PodNamespace *string `schema:"pod_namespace"`
  75. Summary *string `schema:"summary"`
  76. PodPrefix *string `schema:"pod_prefix"`
  77. }
  78. type ListIncidentEventsResponse struct {
  79. Events []*IncidentEvent `json:"events" form:"required"`
  80. Pagination *PaginationResponse `json:"pagination"`
  81. }
  82. type GetLogRequest struct {
  83. Limit uint `schema:"limit"`
  84. StartRange *time.Time `schema:"start_range"`
  85. EndRange *time.Time `schema:"end_range"`
  86. SearchParam string `schema:"search_param"`
  87. Revision string `schema:"revision"`
  88. PodSelector string `schema:"pod_selector" form:"required"`
  89. Namespace string `schema:"namespace" form:"required"`
  90. Direction string `schema:"direction"`
  91. }
  92. type GetPodValuesRequest struct {
  93. StartRange *time.Time `schema:"start_range"`
  94. EndRange *time.Time `schema:"end_range"`
  95. Namespace string `schema:"namespace"`
  96. MatchPrefix string `schema:"match_prefix"`
  97. Revision string `schema:"revision"`
  98. }
  99. type GetRevisionValuesRequest struct {
  100. StartRange *time.Time `schema:"start_range"`
  101. EndRange *time.Time `schema:"end_range"`
  102. MatchPrefix string `schema:"match_prefix"`
  103. }
  104. type LogLine struct {
  105. Timestamp *time.Time `json:"timestamp"`
  106. Line string `json:"line"`
  107. }
  108. type GetLogResponse struct {
  109. BackwardContinueTime *time.Time `json:"backward_continue_time"`
  110. ForwardContinueTime *time.Time `json:"forward_continue_time"`
  111. Logs []LogLine `json:"logs"`
  112. }
  113. type GetKubernetesEventRequest struct {
  114. Limit uint `schema:"limit"`
  115. StartRange *time.Time `schema:"start_range"`
  116. EndRange *time.Time `schema:"end_range"`
  117. Revision string `schema:"revision"`
  118. PodSelector string `schema:"pod_selector" form:"required"`
  119. Namespace string `schema:"namespace" form:"required"`
  120. }
  121. type KubernetesEventLine struct {
  122. Timestamp *time.Time `json:"timestamp"`
  123. Event string `json:"event"`
  124. }
  125. type GetKubernetesEventResponse struct {
  126. ContinueTime *time.Time `json:"continue_time"`
  127. Events []KubernetesEventLine `json:"events"`
  128. }
  129. type EventType string
  130. const (
  131. EventTypeIncident EventType = "incident"
  132. EventTypeIncidentResolved EventType = "incident_resolved"
  133. EventTypeDeploymentStarted EventType = "deployment_started"
  134. EventTypeDeploymentFinished EventType = "deployment_finished"
  135. EventTypeDeploymentErrored EventType = "deployment_errored"
  136. )
  137. type Event struct {
  138. Type EventType `json:"type"`
  139. Version string `json:"version"`
  140. ReleaseName string `json:"release_name"`
  141. ReleaseNamespace string `json:"release_namespace"`
  142. Timestamp *time.Time `json:"timestamp"`
  143. Data map[string]interface{} `json:"data"`
  144. }
  145. type ListEventsRequest struct {
  146. *PaginationRequest
  147. ReleaseName *string `schema:"release_name"`
  148. ReleaseNamespace *string `schema:"release_namespace"`
  149. Type *string `schema:"type"`
  150. }
  151. type ListEventsResponse struct {
  152. Events []*Event `json:"events" form:"required"`
  153. Pagination *PaginationResponse `json:"pagination"`
  154. }
  155. type ListJobEventsRequest struct {
  156. *PaginationRequest
  157. ReleaseName *string `schema:"release_name"`
  158. ReleaseNamespace *string `schema:"release_namespace"`
  159. Type *string `schema:"type"`
  160. JobName string `schema:"job_name" form:"required"`
  161. }