namespace.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package types
  2. import (
  3. "helm.sh/helm/v3/pkg/action"
  4. "helm.sh/helm/v3/pkg/release"
  5. )
  6. // ReleaseListFilter is a struct that represents the various filter options used for
  7. // retrieving the releases
  8. type ReleaseListFilter struct {
  9. Namespace string `json:"namespace"`
  10. Limit int `json:"limit"`
  11. Skip int `json:"skip"`
  12. ByDate bool `json:"byDate"`
  13. StatusFilter []string `json:"statusFilter"`
  14. }
  15. // listStatesFromNames accepts the following list of names:
  16. //
  17. // "deployed", "uninstalled", "uninstalling", "pending-install", "pending-upgrade",
  18. // "pending-rollback", "superseded", "failed"
  19. //
  20. // It returns an action.ListStates to be used in an action.List as filters for
  21. // releases in a certain state.
  22. func (h *ReleaseListFilter) listStatesFromNames() action.ListStates {
  23. var res action.ListStates = 0
  24. for _, name := range h.StatusFilter {
  25. res = res | res.FromName(name)
  26. }
  27. return res
  28. }
  29. // Apply sets the ReleaseListFilter options for an action.List
  30. func (h *ReleaseListFilter) Apply(list *action.List) {
  31. if h.Namespace == "" {
  32. list.AllNamespaces = true
  33. }
  34. list.Limit = h.Limit
  35. list.Offset = h.Skip
  36. list.StateMask = h.listStatesFromNames()
  37. if h.ByDate {
  38. list.ByDate = true
  39. }
  40. }
  41. type ListReleasesRequest struct {
  42. *ReleaseListFilter
  43. }
  44. type ListReleasesResponse []*release.Release