release.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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(
  15. vals url.Values,
  16. repo repository.ServiceAccountRepository,
  17. ) error {
  18. if clusterID, ok := vals["cluster_id"]; ok && len(clusterID) == 1 {
  19. id, err := strconv.ParseUint(clusterID[0], 10, 64)
  20. if err != nil {
  21. return err
  22. }
  23. rf.ClusterID = uint(id)
  24. }
  25. if serviceAccountID, ok := vals["service_account_id"]; ok && len(serviceAccountID) == 1 {
  26. id, err := strconv.ParseUint(serviceAccountID[0], 10, 64)
  27. if err != nil {
  28. return err
  29. }
  30. sa, err := repo.ReadServiceAccount(uint(id))
  31. if err != nil {
  32. return err
  33. }
  34. rf.ServiceAccount = sa
  35. }
  36. if namespace, ok := vals["namespace"]; ok && len(namespace) == 1 {
  37. rf.Namespace = namespace[0]
  38. }
  39. if storage, ok := vals["storage"]; ok && len(storage) == 1 {
  40. rf.Storage = storage[0]
  41. }
  42. return nil
  43. }
  44. // ListReleaseForm represents the accepted values for listing Helm releases
  45. type ListReleaseForm struct {
  46. *ReleaseForm
  47. *helm.ListFilter
  48. }
  49. // PopulateListFromQueryParams populates fields in the ListReleaseForm using the passed
  50. // url.Values (the parsed query params)
  51. func (lrf *ListReleaseForm) PopulateListFromQueryParams(
  52. vals url.Values,
  53. _ repository.ServiceAccountRepository,
  54. ) error {
  55. if namespace, ok := vals["namespace"]; ok && len(namespace) == 1 {
  56. lrf.ListFilter.Namespace = namespace[0]
  57. }
  58. if limit, ok := vals["limit"]; ok && len(limit) == 1 {
  59. if limitInt, err := strconv.ParseInt(limit[0], 10, 64); err == nil {
  60. lrf.ListFilter.Limit = int(limitInt)
  61. }
  62. }
  63. if skip, ok := vals["skip"]; ok && len(skip) == 1 {
  64. if skipInt, err := strconv.ParseInt(skip[0], 10, 64); err == nil {
  65. lrf.ListFilter.Skip = int(skipInt)
  66. }
  67. }
  68. if byDate, ok := vals["byDate"]; ok && len(byDate) == 1 {
  69. if byDateBool, err := strconv.ParseBool(byDate[0]); err == nil {
  70. lrf.ListFilter.ByDate = byDateBool
  71. }
  72. }
  73. if statusFilter, ok := vals["statusFilter"]; ok {
  74. lrf.ListFilter.StatusFilter = statusFilter
  75. }
  76. return nil
  77. }
  78. // GetReleaseForm represents the accepted values for getting a single Helm release
  79. type GetReleaseForm struct {
  80. *ReleaseForm
  81. Name string `json:"name" form:"required"`
  82. Revision int `json:"revision"`
  83. }
  84. // ListReleaseHistoryForm represents the accepted values for getting a single Helm release
  85. type ListReleaseHistoryForm struct {
  86. *ReleaseForm
  87. Name string `json:"name" form:"required"`
  88. }
  89. // RollbackReleaseForm represents the accepted values for getting a single Helm release
  90. type RollbackReleaseForm struct {
  91. *ReleaseForm
  92. Name string `json:"name" form:"required"`
  93. Revision int `json:"revision" form:"required"`
  94. }
  95. // UpgradeReleaseForm represents the accepted values for updating a Helm release
  96. type UpgradeReleaseForm struct {
  97. *ReleaseForm
  98. Name string `json:"name" form:"required"`
  99. Values string `json:"values" form:"required"`
  100. }