deploy_handler.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package api
  2. import (
  3. "net/http"
  4. )
  5. // HandleDeployTemplate triggers a chart deployment from a template
  6. func (app *App) HandleDeployTemplate(w http.ResponseWriter, r *http.Request) {
  7. // vals, err := url.ParseQuery(r.URL.RawQuery)
  8. // if err != nil {
  9. // app.handleErrorFormDecoding(err, ErrReleaseDecode, w)
  10. // return
  11. // }
  12. // form := &forms.InstallChartTemplateForm{
  13. // ReleaseForm: &forms.ReleaseForm{
  14. // Form: &helm.Form{
  15. // Repo: app.repo,
  16. // },
  17. // },
  18. // ChartTemplateForm: &forms.ChartTemplateForm{},
  19. // }
  20. // form.ReleaseForm.PopulateHelmOptionsFromQueryParams(
  21. // vals,
  22. // app.repo.Cluster,
  23. // )
  24. // if err := json.NewDecoder(r.Body).Decode(form); err != nil {
  25. // app.handleErrorFormDecoding(err, ErrUserDecode, w)
  26. // return
  27. // }
  28. // agent, err := app.getAgentFromReleaseForm(
  29. // w,
  30. // r,
  31. // form.ReleaseForm,
  32. // )
  33. // if err != nil {
  34. // return
  35. // }
  36. // baseURL := "https://porter-dev.github.io/chart-repo/"
  37. // values, err := getDefaultValues(form.ChartTemplateForm.TemplateName, baseURL)
  38. // if err != nil {
  39. // return
  40. // }
  41. // // Set image URL
  42. // if form.ChartTemplateForm.ImageURL != "" {
  43. // (*values)["image"].(map[interface{}]interface{})["repository"] = form.ChartTemplateForm.ImageURL
  44. // }
  45. // // Loop through form params to override
  46. // for k := range form.ChartTemplateForm.FormValues {
  47. // switch v := interface{}(k).(type) {
  48. // case string:
  49. // splits := strings.Split(v, ".")
  50. // // Validate that the field to override exists
  51. // currentLoc := *values
  52. // for s := range splits {
  53. // key := splits[s]
  54. // val := currentLoc[key]
  55. // if val == nil {
  56. // fmt.Printf("No such field: %v\n", key)
  57. // } else if s == len(splits)-1 {
  58. // newValue := form.ChartTemplateForm.FormValues[v]
  59. // fmt.Printf("Overriding default %v with %v\n", val, newValue)
  60. // currentLoc[key] = newValue
  61. // } else {
  62. // fmt.Println("Traversing...")
  63. // currentLoc = val.(map[interface{}]interface{})
  64. // }
  65. // }
  66. // default:
  67. // fmt.Println("Non-string type")
  68. // }
  69. // }
  70. // v, err := yaml.Marshal(values)
  71. // if err != nil {
  72. // return
  73. // }
  74. // var tgz string
  75. // switch form.ChartTemplateForm.TemplateName {
  76. // case "redis":
  77. // tgz = "redis-0.0.1.tgz"
  78. // }
  79. // // Output values.yaml string
  80. // _, err = agent.InstallChart(
  81. // "./internal/local_templates/"+tgz,
  82. // v,
  83. // form.ChartTemplateForm.Name,
  84. // form.ReleaseForm.Form.Namespace,
  85. // )
  86. // if err != nil {
  87. // app.sendExternalError(err, http.StatusInternalServerError, HTTPError{
  88. // Code: ErrReleaseDeploy,
  89. // Errors: []string{"error installing a new chart: " + err.Error()},
  90. // }, w)
  91. // return
  92. // }
  93. // w.WriteHeader(http.StatusOK)
  94. }