get_template.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package infra
  2. import (
  3. "net/http"
  4. "strings"
  5. "github.com/porter-dev/porter/api/server/handlers"
  6. "github.com/porter-dev/porter/api/server/shared"
  7. "github.com/porter-dev/porter/api/server/shared/apierrors"
  8. "github.com/porter-dev/porter/api/server/shared/config"
  9. "github.com/porter-dev/porter/api/server/shared/requestutils"
  10. "github.com/porter-dev/porter/api/types"
  11. "github.com/porter-dev/porter/internal/templater/parser"
  12. )
  13. type InfraGetTemplateHandler struct {
  14. handlers.PorterHandlerWriter
  15. }
  16. func NewInfraGetTemplateHandler(
  17. config *config.Config,
  18. writer shared.ResultWriter,
  19. ) *InfraGetTemplateHandler {
  20. return &InfraGetTemplateHandler{
  21. PorterHandlerWriter: handlers.NewDefaultPorterHandler(config, nil, writer),
  22. }
  23. }
  24. func (c *InfraGetTemplateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  25. _, reqErr := requestutils.GetURLParamString(r, types.URLParamTemplateVersion)
  26. if reqErr != nil {
  27. c.HandleAPIError(w, r, reqErr)
  28. return
  29. }
  30. name, reqErr := requestutils.GetURLParamString(r, types.URLParamTemplateName)
  31. if reqErr != nil {
  32. c.HandleAPIError(w, r, reqErr)
  33. return
  34. }
  35. nameLower := strings.ToLower(name)
  36. formYAML, err := parser.FormYAMLFromBytes(&parser.ClientConfigDefault{}, getFormBytesFromKind(name), "declared", "infra")
  37. if err != nil {
  38. c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
  39. return
  40. }
  41. res := &types.InfraTemplate{
  42. InfraTemplateMeta: templateMap[nameLower],
  43. Form: formYAML,
  44. }
  45. c.WriteResult(w, r, res)
  46. }
  47. func getFormBytesFromKind(kind string) []byte {
  48. formBytes := []byte(testForm)
  49. switch strings.ToLower(kind) {
  50. case "ecr":
  51. formBytes = []byte(ecrForm)
  52. case "rds":
  53. formBytes = []byte(rdsForm)
  54. case "s3":
  55. formBytes = []byte(s3Form)
  56. case "eks":
  57. formBytes = []byte(eksForm)
  58. case "gcr":
  59. formBytes = []byte(gcrForm)
  60. case "gar":
  61. formBytes = []byte(garForm)
  62. case "gke":
  63. formBytes = []byte(gkeForm)
  64. case "docr":
  65. formBytes = []byte(docrForm)
  66. case "doks":
  67. formBytes = []byte(doksForm)
  68. case "aks":
  69. formBytes = []byte(aksForm)
  70. case "acr":
  71. formBytes = []byte(acrForm)
  72. }
  73. return formBytes
  74. }