get_template.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 "gke":
  61. formBytes = []byte(gkeForm)
  62. case "docr":
  63. formBytes = []byte(docrForm)
  64. case "doks":
  65. formBytes = []byte(doksForm)
  66. case "aks":
  67. formBytes = []byte(aksForm)
  68. case "acr":
  69. formBytes = []byte(acrForm)
  70. }
  71. return formBytes
  72. }