statefulset.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package kubemodel
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. // @bingen:generate:StatefulSet
  7. // StatefulSet represents a Kubernetes StatefulSet resource
  8. type StatefulSet struct {
  9. UID string `json:"uid"`
  10. NamespaceUID string `json:"namespaceUid"`
  11. Name string `json:"name"`
  12. Labels map[string]string `json:"labels,omitempty"`
  13. Annotations map[string]string `json:"annotations,omitempty"`
  14. MatchLabels map[string]string `json:"matchLabels,omitempty"`
  15. Start time.Time `json:"start,omitempty"`
  16. End time.Time `json:"end,omitempty"`
  17. }
  18. func (s *StatefulSet) ValidateStatefulSet(window Window) error {
  19. if s.UID == "" {
  20. return fmt.Errorf("UID is missing for StatefulSet with name '%s'", s.Name)
  21. }
  22. if s.Name == "" {
  23. return fmt.Errorf("Name is missing for StatefulSet '%s'", s.UID)
  24. }
  25. if s.NamespaceUID == "" {
  26. return fmt.Errorf("NamespaceUID is missing for StatefulSet '%s'", s.UID)
  27. }
  28. if err := checkWindow(window, s.Start, s.End); err != nil {
  29. return err
  30. }
  31. return nil
  32. }
  33. func (kms *KubeModelSet) RegisterStatefulSet(statefulSet *StatefulSet) error {
  34. if err := statefulSet.ValidateStatefulSet(kms.Window); err != nil {
  35. err = fmt.Errorf("RegisterStatefulSet: invalid statefulset: %w", err)
  36. kms.Error(err)
  37. return err
  38. }
  39. if _, ok := kms.StatefulSets[statefulSet.UID]; !ok {
  40. if kms.Cluster == nil {
  41. kms.Warnf("RegisterStatefulSet: Cluster is nil")
  42. }
  43. kms.StatefulSets[statefulSet.UID] = statefulSet
  44. kms.Metadata.ObjectCount++
  45. }
  46. return nil
  47. }