release.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package forms
  2. import (
  3. "fmt"
  4. "net/url"
  5. "strconv"
  6. "github.com/porter-dev/porter/internal/helm"
  7. "github.com/porter-dev/porter/internal/repository"
  8. )
  9. // ReleaseForm is the generic base type for CRUD operations on releases
  10. type ReleaseForm struct {
  11. *helm.Form
  12. }
  13. // PopulateHelmOptionsFromQueryParams populates fields in the ReleaseForm using the passed
  14. // url.Values (the parsed query params)
  15. func (rf *ReleaseForm) PopulateHelmOptionsFromQueryParams(
  16. vals url.Values,
  17. repo repository.ClusterRepository,
  18. ) error {
  19. fmt.Println(vals)
  20. if clusterID, ok := vals["cluster_id"]; ok && len(clusterID) == 1 {
  21. id, err := strconv.ParseUint(clusterID[0], 10, 64)
  22. if err != nil {
  23. return err
  24. }
  25. cluster, err := repo.ReadCluster(uint(id))
  26. if err != nil {
  27. return err
  28. }
  29. fmt.Println("setting cluster")
  30. rf.Cluster = cluster
  31. }
  32. if namespace, ok := vals["namespace"]; ok && len(namespace) == 1 {
  33. fmt.Println("setting namespace")
  34. rf.Namespace = namespace[0]
  35. }
  36. if storage, ok := vals["storage"]; ok && len(storage) == 1 {
  37. fmt.Println("setting storage")
  38. rf.Storage = storage[0]
  39. }
  40. return nil
  41. }
  42. // ListReleaseForm represents the accepted values for listing Helm releases
  43. type ListReleaseForm struct {
  44. *ReleaseForm
  45. *helm.ListFilter
  46. }
  47. // PopulateListFromQueryParams populates fields in the ListReleaseForm using the passed
  48. // url.Values (the parsed query params)
  49. func (lrf *ListReleaseForm) PopulateListFromQueryParams(
  50. vals url.Values,
  51. _ repository.ClusterRepository,
  52. ) error {
  53. if namespace, ok := vals["namespace"]; ok && len(namespace) == 1 {
  54. lrf.ListFilter.Namespace = namespace[0]
  55. }
  56. if limit, ok := vals["limit"]; ok && len(limit) == 1 {
  57. if limitInt, err := strconv.ParseInt(limit[0], 10, 64); err == nil {
  58. lrf.ListFilter.Limit = int(limitInt)
  59. }
  60. }
  61. if skip, ok := vals["skip"]; ok && len(skip) == 1 {
  62. if skipInt, err := strconv.ParseInt(skip[0], 10, 64); err == nil {
  63. lrf.ListFilter.Skip = int(skipInt)
  64. }
  65. }
  66. if byDate, ok := vals["byDate"]; ok && len(byDate) == 1 {
  67. if byDateBool, err := strconv.ParseBool(byDate[0]); err == nil {
  68. lrf.ListFilter.ByDate = byDateBool
  69. }
  70. }
  71. if statusFilter, ok := vals["statusFilter"]; ok {
  72. lrf.ListFilter.StatusFilter = statusFilter
  73. }
  74. return nil
  75. }
  76. // GetReleaseForm represents the accepted values for getting a single Helm release
  77. type GetReleaseForm struct {
  78. *ReleaseForm
  79. Name string `json:"name" form:"required"`
  80. Revision int `json:"revision"`
  81. }
  82. // ListReleaseHistoryForm represents the accepted values for getting a single Helm release
  83. type ListReleaseHistoryForm struct {
  84. *ReleaseForm
  85. Name string `json:"name" form:"required"`
  86. }
  87. // RollbackReleaseForm represents the accepted values for getting a single Helm release
  88. type RollbackReleaseForm struct {
  89. *ReleaseForm
  90. Name string `json:"name" form:"required"`
  91. Revision int `json:"revision" form:"required"`
  92. }
  93. // UpgradeReleaseForm represents the accepted values for updating a Helm release
  94. type UpgradeReleaseForm struct {
  95. *ReleaseForm
  96. Name string `json:"name" form:"required"`
  97. Values string `json:"values" form:"required"`
  98. }
  99. // ChartTemplateForm represents the accepted values for installing a new chart from a template.
  100. type ChartTemplateForm struct {
  101. TemplateName string `json:"templateName" form:"required"`
  102. ImageURL string `json:"imageURL" form:"required"`
  103. FormValues map[string]interface{} `json:"formValues"`
  104. Name string `json:"name"`
  105. }
  106. // InstallChartTemplateForm represents the accepted values for installing a new chart from a template.
  107. type InstallChartTemplateForm struct {
  108. *ReleaseForm
  109. *ChartTemplateForm
  110. }