namespace.go 1.5 KB

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