release.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package forms
  2. import (
  3. "net/url"
  4. "strconv"
  5. "github.com/porter-dev/porter/internal/helm"
  6. "github.com/porter-dev/porter/internal/repository"
  7. )
  8. // ReleaseForm is the generic base type for CRUD operations on releases
  9. type ReleaseForm struct {
  10. *helm.Form
  11. }
  12. // PopulateHelmOptionsFromQueryParams populates fields in the ReleaseForm using the passed
  13. // url.Values (the parsed query params)
  14. func (rf *ReleaseForm) PopulateHelmOptionsFromQueryParams(vals url.Values) {
  15. if context, ok := vals["context"]; ok && len(context) == 1 {
  16. rf.Context = context[0]
  17. }
  18. if namespace, ok := vals["namespace"]; ok && len(namespace) == 1 {
  19. rf.Namespace = namespace[0]
  20. }
  21. if storage, ok := vals["storage"]; ok && len(storage) == 1 {
  22. rf.Storage = storage[0]
  23. }
  24. }
  25. // PopulateHelmOptionsFromUserID uses the passed user ID to populate the HelmOptions object
  26. func (rf *ReleaseForm) PopulateHelmOptionsFromUserID(userID uint, repo repository.UserRepository) error {
  27. user, err := repo.ReadUser(userID)
  28. if err != nil {
  29. return err
  30. }
  31. rf.AllowedContexts = user.ContextToSlice()
  32. rf.KubeConfig = user.RawKubeConfig
  33. return nil
  34. }
  35. // ListReleaseForm represents the accepted values for listing Helm releases
  36. type ListReleaseForm struct {
  37. *ReleaseForm
  38. *helm.ListFilter
  39. }
  40. // PopulateListFromQueryParams populates fields in the ListReleaseForm using the passed
  41. // url.Values (the parsed query params)
  42. func (lrf *ListReleaseForm) PopulateListFromQueryParams(vals url.Values) {
  43. if namespace, ok := vals["namespace"]; ok && len(namespace) == 1 {
  44. lrf.ListFilter.Namespace = namespace[0]
  45. }
  46. if limit, ok := vals["limit"]; ok && len(limit) == 1 {
  47. if limitInt, err := strconv.ParseInt(limit[0], 10, 64); err == nil {
  48. lrf.ListFilter.Limit = int(limitInt)
  49. }
  50. }
  51. if skip, ok := vals["skip"]; ok && len(skip) == 1 {
  52. if skipInt, err := strconv.ParseInt(skip[0], 10, 64); err == nil {
  53. lrf.ListFilter.Skip = int(skipInt)
  54. }
  55. }
  56. if byDate, ok := vals["byDate"]; ok && len(byDate) == 1 {
  57. if byDateBool, err := strconv.ParseBool(byDate[0]); err == nil {
  58. lrf.ListFilter.ByDate = byDateBool
  59. }
  60. }
  61. if statusFilter, ok := vals["statusFilter"]; ok {
  62. lrf.ListFilter.StatusFilter = statusFilter
  63. }
  64. }
  65. // GetReleaseForm represents the accepted values for getting a single Helm release
  66. type GetReleaseForm struct {
  67. *ReleaseForm
  68. Name string `json:"name" form:"required"`
  69. Revision int `json:"revision"`
  70. }
  71. // ListReleaseHistoryForm represents the accepted values for getting a single Helm release
  72. type ListReleaseHistoryForm struct {
  73. *ReleaseForm
  74. Name string `json:"name" form:"required"`
  75. }
  76. // RollbackReleaseForm represents the accepted values for getting a single Helm release
  77. type RollbackReleaseForm struct {
  78. *ReleaseForm
  79. Name string `json:"name" form:"required"`
  80. Revision int `json:"revision" form:"required"`
  81. }
  82. // UpgradeReleaseForm represents the accepted values for updating a Helm release
  83. type UpgradeReleaseForm struct {
  84. *ReleaseForm
  85. Name string `json:"name" form:"required"`
  86. Values string `json:"values" form:"required"`
  87. }