helm-wrapper.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package api
  2. import (
  3. "dag-jupyter/internal/types"
  4. "fmt"
  5. "github.com/parnurzeal/gorequest"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. )
  8. type Resp struct {
  9. Code int `json:"code"`
  10. Data interface{} `json:"data,omitempty"`
  11. Error string `json:"error,omitempty"`
  12. }
  13. const url = "http://localhost:8081"
  14. // const url = "http://192.168.199.109:18080"
  15. func genParam(req *types.CreateJupyterInfo) map[string]interface{} {
  16. settings := make([]string, 0, 16)
  17. settings = append(settings, fmt.Sprintf("ingress.jupyterlab.hosts[0].host=%s", req.Host))
  18. settings = append(settings, fmt.Sprintf("ingress.jupyterlab.hosts[0].paths[0].path=%s", req.Path))
  19. settings = append(settings, fmt.Sprintf("ingress.jupyterlab.hosts[0].paths[0].pathType=%s", req.PathType))
  20. settings = append(settings, fmt.Sprintf("jupyterlab.image.repository=%s", req.Image))
  21. settings = append(settings, fmt.Sprintf("jupyterlab.image.tag=%s", req.Tag))
  22. settings = append(settings, fmt.Sprintf("jupyterlab.config.baseUrl=%s", req.BaseUrl))
  23. settings = append(settings, fmt.Sprintf("jupyterlab.config.workspace=%s", req.Workspace))
  24. settings = append(settings, fmt.Sprintf("jupyterlab.config.password=%s", req.Password))
  25. m := map[string]interface{}{
  26. "dry_run": false,
  27. "create_namespace": false,
  28. "set": settings,
  29. }
  30. return m
  31. }
  32. func Install(req *types.CreateJupyterInfo) error {
  33. m := genParam(req)
  34. request := gorequest.New()
  35. var resp Resp
  36. _, _, errs := request.Post(fmt.Sprintf("%s/api/namespaces/%s/releases/%s?chart=%s", url, req.Namespace, req.ReleaseName, req.Chart)).SendMap(m).EndStruct(&resp)
  37. if len(errs) != 0 {
  38. return fmt.Errorf("helm install error: %s", errs[0])
  39. }
  40. if resp.Code != 0 {
  41. return fmt.Errorf("helm install error: %s", resp.Error)
  42. }
  43. logx.Info("helm install success~~")
  44. return nil
  45. }
  46. func Uninstall(req *types.DeleteJupyterInfo) error {
  47. request := gorequest.New()
  48. var resp Resp
  49. _, _, errs := request.Delete(fmt.Sprintf("%s/api/namespaces/%s/releases/%s", url, req.Namespace, req.ReleaseName)).EndStruct(&resp)
  50. if len(errs) != 0 {
  51. return fmt.Errorf("helm uninstall error: %s", errs[0])
  52. }
  53. if resp.Code != 0 {
  54. return fmt.Errorf("helm uninstall error: %s", resp.Error)
  55. }
  56. logx.Info("helm uninstall success~~")
  57. return nil
  58. }
  59. func Upgrade(req *types.CreateJupyterInfo) error {
  60. m := genParam(req)
  61. request := gorequest.New()
  62. var resp Resp
  63. _, _, errs := request.Put(fmt.Sprintf("%s/api/namespaces/%s/releases/%s?chart=%s", url, req.Namespace, req.ReleaseName, req.Chart)).SendMap(m).EndStruct(&resp)
  64. if len(errs) != 0 {
  65. return fmt.Errorf("helm upgrade error: %s", errs[0])
  66. }
  67. if resp.Code != 0 {
  68. return fmt.Errorf("helm upgrade error: %s", resp.Error)
  69. }
  70. logx.Info("helm upgrade success~~")
  71. return nil
  72. }