package controller import ( "errors" "fmt" "github.com/goodrain/rainbond/api/handler" api_model "github.com/goodrain/rainbond/api/model" httputil "github.com/goodrain/rainbond/util/http" "net/http" ) // HelmStruct - type HelmStruct struct { } // CheckHelmApp check helm app func (t *HelmStruct) CheckHelmApp(w http.ResponseWriter, r *http.Request) { var checkHelmApp api_model.CheckHelmApp if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &checkHelmApp, nil); !ok { return } data := map[string]string{"checkAdopt": "true"} err := handler.GetHelmManager().AddHelmRepo(checkHelmApp) if err != nil && !errors.Is(err, fmt.Errorf("repository templateName (%s) already exists, please specify a different templateName", checkHelmApp.RepoName)) { httputil.ReturnBcodeError(r, w, err) return } err = handler.GetHelmManager().UpdateHelmRepo(checkHelmApp.RepoName) if err != nil { data["checkAdopt"] = "false" data["yaml"] = err.Error() } else { yaml, err := handler.GetHelmManager().CheckHelmApp(checkHelmApp) data["yaml"] = yaml if err != nil { data["checkAdopt"] = "false" data["yaml"] = err.Error() } } httputil.ReturnSuccess(r, w, data) } // GetChartInformation get helm chart details func (t *HelmStruct) GetChartInformation(w http.ResponseWriter, r *http.Request) { var chart api_model.ChartInformation if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &chart, nil); !ok { return } chartVersion, err := handler.GetHelmManager().GetChartInformation(chart) if err != nil { httputil.ReturnBcodeError(r, w, err) return } httputil.ReturnSuccess(r, w, chartVersion) } // GetYamlByChart - func (t *HelmStruct) GetYamlByChart(w http.ResponseWriter, r *http.Request) { var yc api_model.GetYamlByChart if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &yc, nil); !ok { return } data := map[string]string{"checkAdopt": "true"} if yc.EventID == "" { httputil.ReturnError(r, w, 400, "Failed to parse eventID.") return } chartPath := fmt.Sprintf("%s/import/%s/%s", handler.GetAppHandler().GetStaticDir(), yc.EventID, yc.FileName) yaml, err := handler.GetHelmManager().GetYamlByChart(chartPath, yc.Namespace, yc.Name, yc.Version, []string{}) if err != nil { data["checkAdopt"] = "false" data["yaml"] = err.Error() } data["yaml"] = yaml httputil.ReturnSuccess(r, w, data) } // GetUploadChartInformation - func (t *HelmStruct) GetUploadChartInformation(w http.ResponseWriter, r *http.Request) { eventID := r.FormValue("event_id") data, err := handler.GetHelmManager().GetUploadChartInformation(eventID) if err != nil { httputil.ReturnBcodeError(r, w, err) return } httputil.ReturnSuccess(r, w, data) } // CheckUploadChart - func (t *HelmStruct) CheckUploadChart(w http.ResponseWriter, r *http.Request) { var cuc api_model.UploadChart if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &cuc, nil); !ok { return } data := map[string]string{"checkAdopt": "true"} err := handler.GetHelmManager().CheckUploadChart(cuc.Name, cuc.Version, cuc.Namespace, cuc.EventID) if err != nil { data["checkAdopt"] = "false" data["yaml"] = err.Error() } httputil.ReturnSuccess(r, w, data) } // GetUploadChartValue - func (t *HelmStruct) GetUploadChartValue(w http.ResponseWriter, r *http.Request) { eventID := r.FormValue("event_id") valueYaml, err := handler.GetHelmManager().GetUploadChartValue(eventID) if err != nil { httputil.ReturnBcodeError(r, w, err) return } httputil.ReturnSuccess(r, w, valueYaml) } // GetUploadChartResource - func (t *HelmStruct) GetUploadChartResource(w http.ResponseWriter, r *http.Request) { var cuc api_model.UploadChart if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &cuc, nil); !ok { return } chartResources, err := handler.GetHelmManager().GetUploadChartResource(cuc.Name, cuc.Version, cuc.Namespace, cuc.EventID, cuc.Overrides) if err != nil { httputil.ReturnBcodeError(r, w, err) return } httputil.ReturnSuccess(r, w, chartResources) } // ImportUploadChartResource - func (t *HelmStruct) ImportUploadChartResource(w http.ResponseWriter, r *http.Request) { var uci api_model.UploadChartImport if ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &uci, nil); !ok { return } ac, err := handler.GetClusterHandler().AppYamlResourceImport(uci.Namespace, uci.TenantID, uci.AppID, uci.AR) if err != nil { err.Handle(r, w) return } httputil.ReturnSuccess(r, w, ac) }