kube_events.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package models
  2. import (
  3. "time"
  4. "github.com/porter-dev/porter/api/types"
  5. "gorm.io/gorm"
  6. )
  7. // KubeEvent model refers to a type of event from a Kubernetes cluster
  8. type KubeEvent struct {
  9. gorm.Model
  10. ProjectID uint
  11. ClusterID uint
  12. // The name of the referenced kube object
  13. Name string
  14. // The kube resource type, such as "pod", "hpa", or "node"
  15. ResourceType string
  16. // (optional) The owner reference type and name, which can be used to filter events by
  17. // controller
  18. OwnerType string
  19. OwnerName string
  20. // (optional) the namespace of the event, if namespaceable
  21. Namespace string
  22. // The "subevents" attached to the event. These are a grouped collection of events that belong
  23. // to the same object.
  24. SubEvents []KubeSubEvent
  25. }
  26. type KubeSubEvent struct {
  27. gorm.Model
  28. KubeEventID uint
  29. Message string
  30. Reason string
  31. Timestamp time.Time
  32. // The event type, such as "critical" or "normal"
  33. EventType types.KubeEventType
  34. }
  35. func (k *KubeSubEvent) ToKubeSubEventType() *types.KubeSubEvent {
  36. return &types.KubeSubEvent{
  37. Message: k.Message,
  38. Reason: k.Reason,
  39. Timestamp: k.Timestamp,
  40. EventType: k.EventType,
  41. }
  42. }
  43. func (k *KubeEvent) ToKubeEventType() *types.KubeEvent {
  44. subEvents := make([]*types.KubeSubEvent, 0)
  45. for _, subEvent := range k.SubEvents {
  46. subEvents = append(subEvents, subEvent.ToKubeSubEventType())
  47. }
  48. return &types.KubeEvent{
  49. CreatedAt: k.CreatedAt,
  50. UpdatedAt: k.UpdatedAt,
  51. ID: k.ID,
  52. ProjectID: k.ProjectID,
  53. ClusterID: k.ClusterID,
  54. ResourceType: k.ResourceType,
  55. Name: k.Name,
  56. Namespace: k.Namespace,
  57. OwnerType: k.OwnerType,
  58. OwnerName: k.OwnerName,
  59. SubEvents: subEvents,
  60. }
  61. }