replicaset.go 1.5 KB

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