owner.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package kubemodel
  2. import (
  3. "strings"
  4. "github.com/opencost/opencost/core/pkg/log"
  5. )
  6. // @bingen:generate:OwnerKind
  7. type OwnerKind string
  8. const (
  9. OwnerKindDeployment OwnerKind = "deployment"
  10. OwnerKindStatefulSet OwnerKind = "statefulset"
  11. OwnerKindDaemonSet OwnerKind = "daemonset"
  12. OwnerKindJob OwnerKind = "job"
  13. OwnerKindCronJob OwnerKind = "cronjob"
  14. OwnerKindReplicaSet OwnerKind = "replicaset"
  15. )
  16. func ParseOwnerKind(kind string) OwnerKind {
  17. switch strings.ToLower(kind) {
  18. case "deployment":
  19. return OwnerKindDeployment
  20. case "statefulset":
  21. return OwnerKindStatefulSet
  22. case "daemonset":
  23. return OwnerKindDaemonSet
  24. case "job":
  25. return OwnerKindJob
  26. case "cronjob":
  27. return OwnerKindCronJob
  28. case "replicaset":
  29. return OwnerKindReplicaSet
  30. default:
  31. log.Warnf("failed to find owner kind for '%s'", kind)
  32. return OwnerKind(strings.ToLower(kind))
  33. }
  34. }
  35. // @bingen:generate:Owner
  36. // Owner represents a Kubernetes resource owner (workload controller)
  37. type Owner struct {
  38. UID string `json:"uid"`
  39. Controller bool `json:"controller"`
  40. Kind OwnerKind `json:"kind"`
  41. }