From b843dc6a9626dc188def57b3c98ae010f201d9a6 Mon Sep 17 00:00:00 2001 From: hys Date: Tue, 29 Jul 2025 10:54:26 +0800 Subject: [PATCH] fix: add some log --- pkg/api/server/handlers_api.go | 8 +++++++ pkg/api/server/handlers_cmd.go | 21 +++++++++++++++-- pkg/api/server/handlers_files.go | 15 ++++++++++--- pkg/development/command/chartmuseum.go | 10 ++++++++- pkg/development/command/command_test.go | 6 ++--- pkg/development/command/copyapp.go | 16 +++++++------ pkg/development/command/createapp.go | 30 ++++++++++++++++++++----- pkg/development/command/delete.go | 2 +- pkg/development/command/install.go | 15 +++++-------- pkg/development/command/lint.go | 3 +++ pkg/development/command/package.go | 10 ++++++++- pkg/development/command/unpackage.go | 12 +++++----- pkg/development/command/updaterepo.go | 30 ++++++++++++++----------- pkg/development/command/utils.go | 20 ++++++++++++----- pkg/utils/utils.go | 7 ++++++ 15 files changed, 149 insertions(+), 56 deletions(-) diff --git a/pkg/api/server/handlers_api.go b/pkg/api/server/handlers_api.go index 3e45dbb..208bc6f 100644 --- a/pkg/api/server/handlers_api.go +++ b/pkg/api/server/handlers_api.go @@ -233,6 +233,7 @@ func (h *handlers) bindContainer(ctx *fiber.Ctx) error { } if err == nil { + klog.Errorf("devcontainer %s already exists", devContainer.Name) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("devcontainer %s already exists", devContainer.Name), @@ -442,6 +443,7 @@ func (h *handlers) listAppContainersInChart(ctx *fiber.Ctx) error { manifest, err := helm.DryRun(ctx.Context(), h.kubeConfig, testNamespace, appName, getAppPath(username, app), values) if err != nil { + klog.Errorf("failed to dry run %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Dry run failed: %v", err), @@ -450,6 +452,7 @@ func (h *handlers) listAppContainersInChart(ctx *fiber.Ctx) error { resources, err := helm.DecodeManifest(manifest) if err != nil { + klog.Errorf("failed to decode manifest %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Decode manifest failed: %v", err), @@ -768,6 +771,7 @@ func (h *handlers) updateDevContainer(ctx *fiber.Ctx) error { app := make(map[string]string) err := ctx.BodyParser(&app) if err != nil { + klog.Errorf("failed to parse body %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Parse body failed: %v", err), @@ -784,6 +788,7 @@ func (h *handlers) updateDevContainer(ctx *fiber.Ctx) error { err = h.db.DB.Model(&model.DevContainers{}).Where("name = ?", name).Update("name", newName).Error if err != nil { + klog.Errorf("failed to update dev container name=%s, err=%v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Update dev conainter failed: %v", err), @@ -873,16 +878,19 @@ func GetAppContainersInChart(owner, app string) ([]*helm.ContainerInfo, error) { values["domain"] = entries kubeConfig, err := ctrl.GetConfig() if err != nil { + klog.Errorf("failed to get kube config %v", err) return nil, err } manifest, err := helm.DryRun(context.TODO(), kubeConfig, testNamespace, appName, getAppPath(owner, app), values) if err != nil { + klog.Errorf("failed to parse manifest %v", err) return nil, err } resources, err := helm.DecodeManifest(manifest) if err != nil { + klog.Errorf("failed to decode manifest %v", err) return nil, err } op := db.NewDbOperator() diff --git a/pkg/api/server/handlers_cmd.go b/pkg/api/server/handlers_cmd.go index bcb1413..d6b8cf3 100644 --- a/pkg/api/server/handlers_cmd.go +++ b/pkg/api/server/handlers_cmd.go @@ -238,7 +238,6 @@ func (h *handlers) installDevApp(ctx *fiber.Ctx) error { token := ctx.Locals("auth_token").(string) - name, ok := app["name"] if !ok { klog.Error("app name is empty, ", app) @@ -257,6 +256,7 @@ func (h *handlers) installDevApp(ctx *fiber.Ctx) error { }() err = UpdateDevAppState(username, name, deploying) if err != nil { + klog.Errorf("failed to update dev app state name=%s,err=%v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("update app state err %v", err), @@ -269,7 +269,7 @@ func (h *handlers) installDevApp(ctx *fiber.Ctx) error { err = command.Lint().WithDir(BaseDir).Run(context.TODO(), username, name) if err != nil { - + klog.Errorf("failed to lint app=%s, err=%v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": err.Error(), @@ -299,6 +299,7 @@ func (h *handlers) installDevApp(ctx *fiber.Ctx) error { klog.Info("preinstall, create a labeled namespace for webhook") _, err = container.CreateOrUpdateDevNamespace(ctx.Context(), h.kubeConfig, username, devName) if err != nil { + klog.Errorf("failed to check namespace %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Check namespace failed: %v", err), @@ -329,6 +330,7 @@ func (h *handlers) installDevApp(ctx *fiber.Ctx) error { err = UpdateDevAppState(username, name, deployed) if err != nil { + klog.Errorf("failed to update app=%s state to deployed %v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("update app state to deployed err %v", err), @@ -354,6 +356,7 @@ func (h *handlers) downloadDevAppChart(ctx *fiber.Ctx) error { buf, err := command.PackageChart().WithDir(BaseDir).Run(app) if err != nil { + klog.Errorf("failed to package app=%s chart %v", app, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Package chart Failed: %v", err), @@ -515,6 +518,7 @@ func (h *handlers) deleteDevApp(ctx *fiber.Ctx) error { err = command.DeleteChart().WithDir(BaseDir).Run(name) if err != nil { + klog.Errorf("failed to delete chart %s, err=%v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Delete Chart Failed: %v", err), @@ -610,6 +614,7 @@ func (h *handlers) lintDevAppChart(ctx *fiber.Ctx) error { err := command.Lint().WithDir(BaseDir).Run(ctx.Context(), username, app) if err != nil { + klog.Errorf("failed to lint app %s, err=%v", app, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Lint Failed: %v", err), @@ -643,6 +648,7 @@ func (h *handlers) uninstall(ctx *fiber.Ctx) error { devName := name + "-dev" res, err := uninstall(devName, token) if err != nil { + klog.Errorf("failed to uninstall %s, err=%v", devName, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Uninstall Failed: %v", err), @@ -684,6 +690,7 @@ func (h *handlers) createAppByArchive(ctx *fiber.Ctx) error { uniqueId := strings.ReplaceAll(uuid.NewString(), "-", "") err = UnArchive(filepath.Join("/tmp", file.Filename), filepath.Join("/tmp", uniqueId)) if err != nil { + klog.Errorf("failed to unarchive file %s, err=%v", filepath.Join("/tmp", file.Filename), err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("UnArchive failed: %v", err), @@ -692,6 +699,7 @@ func (h *handlers) createAppByArchive(ctx *fiber.Ctx) error { cfg, err := readCfgFromFile(username, filepath.Join("/tmp", uniqueId)) if err != nil { + klog.Errorf("failed to read cfg from file %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Read cfg frome file failed: %v", err), @@ -706,6 +714,7 @@ func (h *handlers) createAppByArchive(ctx *fiber.Ctx) error { err = command.Lint().WithDir(filepath.Dir(chartDir)).Run(context.TODO(), username, filepath.Base(chartDir)) if err != nil { + klog.Errorf("lint failed %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Lint failed: %v", err), @@ -753,6 +762,7 @@ func (h *handlers) createAppByArchive(ctx *fiber.Ctx) error { } appID, err = InsertDevApp(&appData) if err != nil { + klog.Errorf("failed to insert app %s,err=%v", cfg.Metadata.Name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Insert app failed: %v", err), @@ -767,6 +777,7 @@ func (h *handlers) createAppByArchive(ctx *fiber.Ctx) error { if err != nil { klog.Error(e) } + klog.Errorf("failed to copy app dir %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Copy app withdir failed: %v", err), @@ -1035,6 +1046,7 @@ func (h *handlers) fillApp(ctx *fiber.Ctx) error { } appId, err := UpdateDevApp(username, cfg.Name, updates) if err != nil { + klog.Errorf("failed to update dev app %s, err=%v", cfg.Name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("update app err %v", err), @@ -1077,6 +1089,7 @@ func (h *handlers) fillAppWithExample(ctx *fiber.Ctx) error { var app App err := ctx.BodyParser(&app) if err != nil { + klog.Errorf("failed to parse body %v", err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Bad Request: %v", err), @@ -1104,6 +1117,7 @@ func (h *handlers) fillAppWithExample(ctx *fiber.Ctx) error { appId, err := UpdateDevApp(username, name, updates) if err != nil { + klog.Errorf("failed to update app %s, err=%v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("update app err %v", err), @@ -1169,6 +1183,7 @@ func (h *handlers) fillAppWithDevContainer(ctx *fiber.Ctx) error { appId, err := UpdateDevApp(username, name, updates) if err != nil { + klog.Errorf("failed to update dev app %w,err=%v", name, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("update app err %v", err), @@ -1177,6 +1192,7 @@ func (h *handlers) fillAppWithDevContainer(ctx *fiber.Ctx) error { containers, err := GetAppContainersInChart(username, name) if err != nil || len(containers) == 0 { + klog.Errorf("failed to get app containers in chart err=%v, len(containers)=%d", err, len(containers)) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("get bind containers err %v", err), @@ -1194,6 +1210,7 @@ func (h *handlers) fillAppWithDevContainer(ctx *fiber.Ctx) error { } err = BindContainer(bindData) if err != nil { + klog.Errorf("failed to bind container app=%s,err=%v", name, err) e := h.db.DB.Where("app_id = ?", appId).Delete(&model.DevAppContainers{}).Error if e != nil && !errors.Is(e, gorm.ErrRecordNotFound) { klog.Errorf("delete devAppContainer app_id=%d err %v", appId, e) diff --git a/pkg/api/server/handlers_files.go b/pkg/api/server/handlers_files.go index c13e4f9..9090ffb 100644 --- a/pkg/api/server/handlers_files.go +++ b/pkg/api/server/handlers_files.go @@ -64,6 +64,7 @@ func (h *handlers) saveFile(ctx *fiber.Ctx) error { appName := pathParts[0] file, err := WriteFileAndLint(ctx.Context(), username, path, appName, bytes.NewReader(content), command.Lint().WithDir(BaseDir).Run) if err != nil { + klog.Errorf("failed to write app=%s file path=%s", appName, path) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": err.Error(), @@ -81,32 +82,38 @@ func WriteFileAndLint(ctx context.Context, owner, originFilePath, name string, c if !exists { err := os.MkdirAll("/charts/tmp", 0755) if err != nil { + klog.Errorf("failed to mkdir dir=%s,err=%v", "/charts/tmp", err) return nil, err } } tempFile, err := os.CreateTemp("/charts/tmp", "bak-*"+filepath.Base(originFilePath)) if err != nil { + klog.Infof("failed to crate temp file %v", err) return nil, fmt.Errorf("create bak temp file failed %v", tempFile) } - bakContent, err := os.ReadFile(filepath.Join(BaseDir, originFilePath)) + bakContent, err := os.ReadFile(filepath.Join(BaseDir, owner, originFilePath)) if err != nil { + klog.Errorf("failed to read origin file path=%s,err=%v", originFilePath, err) return nil, fmt.Errorf("read origin file %s failed %v", originFilePath, err) } _, err = tempFile.Write(bakContent) if err != nil { + klog.Errorf("failed to write bak content to temp file %v", err) return nil, err } file, err := files.WriteFile(afero.NewBasePathFs(afero.NewOsFs(), BaseDir), originFilePath, content) if err != nil { + klog.Infof("failed to write file path=%s, err=%v", originFilePath, err) return nil, err } if err = lintFunc(ctx, owner, name); err != nil { if restoreErr := os.Rename(tempFile.Name(), filepath.Join(BaseDir, owner, originFilePath)); restoreErr != nil { + klog.Errorf("failed to lint and restore, path=%s,err=%v", filepath.Join(BaseDir, owner, originFilePath), restoreErr) return nil, fmt.Errorf("lint failed: %v, and restore bak failed: %v", err, restoreErr) } return nil, fmt.Errorf("lint failed: %v", err) @@ -114,7 +121,7 @@ func WriteFileAndLint(ctx context.Context, owner, originFilePath, name string, c if _, err = os.Stat(tempFile.Name()); err == nil { e := os.Remove(tempFile.Name()) if e != nil { - klog.Infof("remove temp file failed %v", e) + klog.Infof("remove temp file path=%s failed %v", tempFile.Name(), e) } } @@ -129,6 +136,7 @@ func (h *handlers) resourcePostHandler(ctx *fiber.Ctx) error { klog.Infof("resourcePostHandler mkdir: %s", filepath.Join(BaseDir, path)) err := os.MkdirAll(filepath.Join(BaseDir, path), 0755) if err != nil { + klog.Errorf("failed to mkdir dir=%s, err=%v", filepath.Join(BaseDir, path), err) return ctx.JSON(fiber.Map{ "code": errToStatus(err), "message": err.Error(), @@ -151,7 +159,7 @@ func (h *handlers) resourcePostHandler(ctx *fiber.Ctx) error { } file, err := files.WriteFile(afero.NewBasePathFs(afero.NewOsFs(), BaseDir), path, bytes.NewReader(ctx.Body())) if err != nil { - klog.Error("write file error, ", err, ", ", path) + klog.Infof("failed to write file path=%s, err=%v", path, err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Write file failed: %v path: %s", err, path), @@ -180,6 +188,7 @@ func (h *handlers) resourceDeleteHandler(ctx *fiber.Ctx) error { } err = os.RemoveAll(filepath.Join(BaseDir, path)) if err != nil { + klog.Errorf("failed to remove dir=%s, err=%v", filepath.Join(BaseDir, path), err) return ctx.JSON(fiber.Map{ "code": http.StatusBadRequest, "message": fmt.Sprintf("Delete file failed: %v", err), diff --git a/pkg/development/command/chartmuseum.go b/pkg/development/command/chartmuseum.go index 43ff550..9f5e2ca 100644 --- a/pkg/development/command/chartmuseum.go +++ b/pkg/development/command/chartmuseum.go @@ -1,7 +1,9 @@ package command import ( + "errors" "fmt" + "k8s.io/klog/v2" "net/http" "time" @@ -16,12 +18,15 @@ func getChartVersions(owner, name string) (helm_repo.ChartVersions, error) { url := fmt.Sprintf("http://127.0.0.1:8888/%s/api/charts/%s", owner, name) resp, err := client.R().Get(url) if err != nil { + klog.Errorf("failed to send request to url=%s,err=%v", url, err) return chartVersions, err } if resp.StatusCode() != http.StatusOK { + klog.Errorf("get chart versions from chartmuseum return unexpected status code %d,err=%v", resp.StatusCode(), resp.String()) return chartVersions, fmt.Errorf("get chart versions from chartmuseum return unexpected status code, %d", resp.StatusCode()) } if err = yaml.Unmarshal(resp.Body(), &chartVersions); err != nil { + klog.Errorf("failed to unmarshal body to chartVersions %v", err) return chartVersions, err } return chartVersions, nil @@ -32,10 +37,13 @@ func deleteChartVersion(owner, name, version string) error { url := fmt.Sprintf("http://127.0.0.1:8888/%s/api/charts/%s/%s", owner, name, version) resp, err := client.R().Delete(url) if err != nil { + klog.Errorf("failed to send request to url=%s,err=%v", url, err) return err } if resp.StatusCode() != http.StatusOK { - return fmt.Errorf("delete chart %s, version %s from chartmuseum return unexpected status code", name, version) + msg := fmt.Sprintf("failed to delete chart %s, version %s from chart repo return unexpected status code %v,err=%v", name, version, resp.StatusCode(), resp.String()) + klog.Error(msg) + return errors.New(msg) } return nil } diff --git a/pkg/development/command/command_test.go b/pkg/development/command/command_test.go index 26d67b6..673feff 100644 --- a/pkg/development/command/command_test.go +++ b/pkg/development/command/command_test.go @@ -10,7 +10,7 @@ import ( ) func TestCreateApp(t *testing.T) { - err := CreateApp().WithDir("/tmp").Run(context.Background(), &CreateConfig{Name: "testdev"}) + err := CreateApp().WithDir("/tmp").Run(context.Background(), &CreateConfig{Name: "testdev"}, "") if err != nil { klog.Error(err) t.Fail() @@ -20,7 +20,7 @@ func TestCreateApp(t *testing.T) { } func TestInstall(t *testing.T) { - _, err := Install().Run(context.Background(), "newapp", "test", "0.0.1") + _, err := Install().Run(context.Background(), "newapp", "test", "", "0.0.1") if err != nil { klog.Error(err) t.Fail() @@ -30,7 +30,7 @@ func TestInstall(t *testing.T) { } func TestUpdateRepo(t *testing.T) { - _, err := UpdateRepo().WithDir("/tmp").Run(context.Background(), "newapp", false) + _, err := UpdateRepo().WithDir("/tmp").Run(context.Background(), "newapp", "app", false) if err != nil { klog.Error(err) t.Fail() diff --git a/pkg/development/command/copyapp.go b/pkg/development/command/copyapp.go index eda75f9..e03a5b1 100644 --- a/pkg/development/command/copyapp.go +++ b/pkg/development/command/copyapp.go @@ -2,6 +2,7 @@ package command import ( "errors" + "fmt" "io/fs" "os" "path/filepath" @@ -32,6 +33,7 @@ func (c *copyApp) Run(src, dstApp string) error { files, err := os.ReadDir(src) if err != nil { + klog.Errorf("failed to read dir %s, err=%v", src, err) return err } @@ -49,7 +51,7 @@ func (c *copyApp) Run(src, dstApp string) error { srcChart, err := helm.LoadChart(src) if err != nil { - klog.Error("load chart from source error, ", err, ", ", src) + klog.Errorf("failed to load chart from source %s, err=%v", src, err) return err } @@ -58,28 +60,28 @@ func (c *copyApp) Run(src, dstApp string) error { if existDir(realPath) { dstChart, err := helm.LoadChart(realPath) if err != nil { - klog.Error("load dest chart error, ", err) + klog.Errorf("failed to load dest chart %s, err=%v", realPath, err) } else { version, err := helm.GetChartVersion(dstChart) if err != nil { - klog.Error("get dest chart version error, ", err) + klog.Errorf("failed to get dest chart %s version, err=%v", realPath, err) } else { err = helm.UpdateChartVersion(srcChart, dstApp, src, version) if err != nil { - klog.Error("update source chart error, ", err) + klog.Errorf("failed to update chart name=%s,path=%s, to version=%s, err=%v", dstApp, src, version.String(), err) } } } err = os.RemoveAll(realPath) if err != nil { - klog.Error("remove app chart path error, ", err, ", ", realPath) - return err + msg := fmt.Sprintf("failed to remove app chart path %s,err=%v", realPath, err) + return errors.New(msg) } } err = copyDir(src, realPath) if err != nil { - klog.Error("copy dir error, ", err, ", from ", src, " to ", realPath) + klog.Errorf("failed to copy dir from %s to %s, err=%v", src, realPath, err) } return err } diff --git a/pkg/development/command/createapp.go b/pkg/development/command/createapp.go index ecbb6e6..c776e6f 100644 --- a/pkg/development/command/createapp.go +++ b/pkg/development/command/createapp.go @@ -906,32 +906,41 @@ func (at *AppTemplate) WriteFile(cfg *CreateConfig, baseDir string, owner string createPath := filepath.Join(path, "templates") err = os.MkdirAll(createPath, os.ModePerm) if err != nil { + klog.Errorf("failed to mkdir path %s err=%v", createPath, err) return err } if at.appCfg != nil { yml, err := ToYaml(at.appCfg) if err != nil { + klog.Errorf("failed to convert appCfg to yaml %v", err) return err } - err = ioutil.WriteFile(filepath.Join(path, constants.AppCfgFileName), yml, 0644) + filename := filepath.Join(path, constants.AppCfgFileName) + err = ioutil.WriteFile(filename, yml, 0644) if err != nil { + klog.Errorf("failed to write file %s err=%v", filename, err) return err } } if at.chartMetadata != nil { yml, err := ToYaml(at.chartMetadata) if err != nil { + klog.Errorf("failed to convert chart metadata to yaml %v", err) return err } - err = ioutil.WriteFile(filepath.Join(path, "Chart.yaml"), yml, 0644) + filename := filepath.Join(path, "Chart.yaml") + err = ioutil.WriteFile(filename, yml, 0644) if err != nil { + klog.Errorf("failed to write file %s, err=%v", filename, err) return err } } if at.owner != nil { - err = ioutil.WriteFile(filepath.Join(path, "owners"), []byte{}, 0644) + filename := filepath.Join(path, "owners") + err = ioutil.WriteFile(filename, []byte{}, 0644) if err != nil { + klog.Errorf("failed to write file %s, err=%v", filename, err) return err } } @@ -939,6 +948,7 @@ func (at *AppTemplate) WriteFile(cfg *CreateConfig, baseDir string, owner string if at.deployment != nil { yml, err = ToYaml(at.deployment) if err != nil { + klog.Errorf("failed to convert deployment to yaml %v", err) return err } @@ -947,17 +957,22 @@ func (at *AppTemplate) WriteFile(cfg *CreateConfig, baseDir string, owner string if at.service != nil { serviceYml, err := ToYaml(at.service) if err != nil { + klog.Errorf("failed to convert service to yaml %v", err) return err } yml = append(yml, sep...) yml = append(yml, serviceYml...) } - err = ioutil.WriteFile(filepath.Join(path, "templates", "deployment.yaml"), yml, 0644) + filename := filepath.Join(path, "templates", "deployment.yaml") + err = ioutil.WriteFile(filename, yml, 0644) if err != nil { + klog.Errorf("failed to write file %s, err=%v", filename, err) return err } - err = ioutil.WriteFile(filepath.Join(path, "values.yaml"), nil, 0644) + filename = filepath.Join(path, "values.yaml") + err = ioutil.WriteFile(filename, nil, 0644) if err != nil { + klog.Errorf("failed to write file %s, err=%v", filename, err) return err } if cfg.Traefik { @@ -973,6 +988,7 @@ func (at *AppTemplate) WriteTraefikFile(path string) error { // ServiceAccount yml, err := ToYaml(at.traefik.sa) if err != nil { + klog.Errorf("failed to convert traefik.sa to yaml %v", err) return err } source := []byte("# Source: traefik/templates/rbac/serviceaccount.yaml\n") @@ -981,6 +997,7 @@ func (at *AppTemplate) WriteTraefikFile(path string) error { // PersistentVolumeClaim pvcYml, err := ToYaml(at.traefik.pvc) if err != nil { + klog.Errorf("failed to convert traefik.pvc to yaml %v", err) return err } source = []byte("# Source: traefik/templates/pvc.yaml\n") @@ -990,6 +1007,7 @@ func (at *AppTemplate) WriteTraefikFile(path string) error { // Role roleYml, err := ToYaml(at.traefik.role) if err != nil { + klog.Errorf("failed to convert traefik.role to yaml %v", err) return err } source = []byte("# Source: traefik/templates/rbac/clusterrole.yaml\n") @@ -999,6 +1017,7 @@ func (at *AppTemplate) WriteTraefikFile(path string) error { // RoleBinding roleBindingYml, err := ToYaml(at.traefik.roleBinding) if err != nil { + klog.Errorf("failed to convert traefik.roleBinding to yaml %v", err) return err } source = []byte("# Source: traefik/templates/rbac/clusterrolebinding.yaml\n") @@ -1008,6 +1027,7 @@ func (at *AppTemplate) WriteTraefikFile(path string) error { // Service svcYml, err := ToYaml(at.traefik.svc) if err != nil { + klog.Errorf("failed to convert traefik.svc to yaml %v", err) return err } source = []byte("# Source: traefik/templates/service.yaml\n") diff --git a/pkg/development/command/delete.go b/pkg/development/command/delete.go index 93a7e83..3764639 100644 --- a/pkg/development/command/delete.go +++ b/pkg/development/command/delete.go @@ -25,7 +25,7 @@ func (c *deleteChart) Run(pathToPackage string) error { err := os.RemoveAll(realPath) if err != nil { - klog.Error("remove chart dir error, ", err, ", ", realPath) + klog.Errorf("failed to remove chart dir %s, err=%v", realPath, err) } return err diff --git a/pkg/development/command/install.go b/pkg/development/command/install.go index 2bc30d5..70e7d2e 100644 --- a/pkg/development/command/install.go +++ b/pkg/development/command/install.go @@ -28,11 +28,12 @@ func (c *install) Run(ctx context.Context, owner, app string, token string, vers err := c.UploadChartToMarket(ctx, owner, app, token, version) if err != nil { + klog.Errorf("failed to upload app=%s chart to market chart repo %v", app, err) return "", err } err = c.waitForMarketUpdate(ctx, owner, app, version) if err != nil { - klog.Errorf("wait market ready app: %s failed", app) + klog.Errorf("wait market ready app: %s failed, err=%v", app, err) return "", err } @@ -51,25 +52,21 @@ func (c *install) Run(ctx context.Context, owner, app string, token string, vers SetHeader("X-Authorization", token). SetBody(body).Post(url) if err != nil { - klog.Errorf("send install request failed : %v", err) + klog.Errorf("send install request failed : %v", err) return "", err } klog.Infof("install: statusCode: %d", resp.StatusCode()) if resp.StatusCode() != http.StatusOK { - dump, e := httputil.DumpRequest(resp.Request.RawRequest, true) - if e == nil { - klog.Error("request bfl.InstallDevApp", string(dump)) - } + klog.Errorf("get response from url=%s, with statusCode=%d,err=%v", url, resp.StatusCode(), resp.String()) return "", errors.New(string(resp.Body())) } - klog.Infof("body: %s\n", string(resp.Body())) return "", nil } func (c *install) UploadChartToMarket(ctx context.Context, owner, app string, token string, version string) error { - client := resty.New().SetTimeout(30 * time.Second) + client := resty.New().SetTimeout(2 * time.Minute) chartFilePath := fmt.Sprintf("/storage/%s/%s-%s.tgz", owner, app, version) klog.Infof("chartFilePath: %s", chartFilePath) @@ -127,7 +124,7 @@ func (c *install) waitForMarketUpdate(ctx context.Context, owner, app, version s case msg := <-msgChan: var updateInfo MarketSystemUpdate if err := json.Unmarshal(msg.Data, &updateInfo); err != nil { - klog.Errorf("failed to Unmarshal %v", err) + klog.Errorf("failed to unmarshal marketSystemUpdate %v", err) continue } klog.Infof("message: %#v", updateInfo) diff --git a/pkg/development/command/lint.go b/pkg/development/command/lint.go index 065edc0..2860075 100644 --- a/pkg/development/command/lint.go +++ b/pkg/development/command/lint.go @@ -2,6 +2,7 @@ package command import ( "context" + "k8s.io/klog/v2" "path/filepath" "github.com/beclab/oachecker" @@ -24,10 +25,12 @@ func (l *lint) Run(ctx context.Context, owner, chart string) error { chartPath := filepath.Join(l.baseCommand.dir, owner, chart) err := oachecker.LintWithDifferentOwnerAdmin(chartPath, "owner", "admin") if err != nil { + klog.Errorf("failed to lint chart path=%s with different owner and admin %v", chartPath, err) return err } err = oachecker.LintWithSameOwnerAdmin(chartPath, "owner") if err != nil { + klog.Errorf("failed to lint chart path=%s with same owner and admin %v", chartPath, err) return err } return err diff --git a/pkg/development/command/package.go b/pkg/development/command/package.go index 870f563..004ebfa 100644 --- a/pkg/development/command/package.go +++ b/pkg/development/command/package.go @@ -32,7 +32,7 @@ func (c *packageChart) Run(pathToPackage string) (*bytes.Buffer, error) { err := c.compress(realPath, &buf) if err != nil { - klog.Error("compress chart error, ", err, ", ", pathToPackage, ", ", realPath) + klog.Errorf("failed to compress chart path=%s, err=%v", realPath, err) return nil, err } @@ -47,6 +47,7 @@ func (c *packageChart) compress(src string, buf io.Writer) error { // is file a folder? fi, err := os.Stat(src) if err != nil { + klog.Errorf("failed to stat path=%s, err=%v", src, err) return err } mode := fi.Mode() @@ -54,18 +55,22 @@ func (c *packageChart) compress(src string, buf io.Writer) error { // get header header, err := tar.FileInfoHeader(fi, src) if err != nil { + klog.Errorf("failed to get file info header %v", err) return err } // write header if err := tw.WriteHeader(header); err != nil { + klog.Errorf("failed to write header %v", err) return err } // get content data, err := os.Open(src) if err != nil { + klog.Errorf("failed to open path=%s, err=%v", src, err) return err } if _, err := io.Copy(tw, data); err != nil { + klog.Errorf("failed to copy data %v", err) return err } } else if mode.IsDir() { // folder @@ -78,6 +83,7 @@ func (c *packageChart) compress(src string, buf io.Writer) error { // generate tar header header, err := tar.FileInfoHeader(fi, file) if err != nil { + klog.Errorf("failed to generate tar header file=%s,err=%v", file, err) return err } @@ -88,12 +94,14 @@ func (c *packageChart) compress(src string, buf io.Writer) error { // write header if err := tw.WriteHeader(header); err != nil { + klog.Errorf("failed to write header %v", err) return err } // if not a dir, write file content if !fi.IsDir() { data, err := os.Open(file) if err != nil { + klog.Errorf("failed to open file=%s, err=%v", file, err) return err } if _, err := io.Copy(tw, data); err != nil { diff --git a/pkg/development/command/unpackage.go b/pkg/development/command/unpackage.go index 0090dda..0806249 100644 --- a/pkg/development/command/unpackage.go +++ b/pkg/development/command/unpackage.go @@ -27,19 +27,19 @@ func (c *unpackageChart) WithDir(dir string) *unpackageChart { func (c *unpackageChart) Run(path string) error { buf, err := os.ReadFile(path) if err != nil { - klog.Error("read file error, ", err, ", ", path) + klog.Errorf("failed to read file path=%s, err=%v", path, err) return err } zr, err := gzip.NewReader(bytes.NewBuffer(buf)) if err != nil { - klog.Error("gunzip error, ", err, ", ", path) + klog.Errorf("failed to gunzip path=%s,err=%v", path, err) return err } tgz := tar.NewReader(zr) if err := os.MkdirAll(c.baseDir, 0775); err != nil { - klog.Error("mkdir error, ", err, ", ", c.baseDir) + klog.Errorf("failed to mkdir path=%s, err=%v", c.baseDir, err) return err } @@ -51,7 +51,7 @@ func (c *unpackageChart) Run(path string) error { klog.Info("untar success, ", path) return nil case err != nil: - klog.Error("untar error, ", err, ", ", path) + klog.Errorf("failed to untar path=%s, err=%v", path, err) return err case header == nil: continue @@ -62,19 +62,21 @@ func (c *unpackageChart) Run(path string) error { case tar.TypeDir: if !existDir(dstFileOrDir) { if err := os.MkdirAll(dstFileOrDir, 0775); err != nil { - klog.Error("mkdir error, ", err, ", ", dstFileOrDir) + klog.Errorf("failed to mkdir path=%v, err=%v", dstFileOrDir, err) return err } } case tar.TypeReg: file, err := os.OpenFile(dstFileOrDir, os.O_CREATE|os.O_RDWR, os.FileMode(header.Mode)) if err != nil { + klog.Errorf("failed to open file path=%s, err=%v", dstFileOrDir, err) return err } defer file.Close() n, err := io.Copy(file, tgz) if err != nil { + klog.Errorf("failed to copy file %v", err) return err } diff --git a/pkg/development/command/updaterepo.go b/pkg/development/command/updaterepo.go index 7d56bb0..3c40e92 100644 --- a/pkg/development/command/updaterepo.go +++ b/pkg/development/command/updaterepo.go @@ -35,52 +35,53 @@ func (c *updateRepo) Run(ctx context.Context, owner, app string, notExist bool) chart, err := helm.LoadChart(realPath) if err != nil { - klog.Error("load chart to upgrade repo error, ", err, ", ", realPath) + klog.Errorf("failed to load chart path=%s to repo,err=%v", realPath, err) return "", err } - klog.Info("upgrade chart version, ", app) + klog.Infof("start to upgrade chart version app=%s", app) version, err := helm.GetChartVersion(chart) if err != nil { + klog.Errorf("failed to get app=%s chart version %v", app, err) return "", err } newVersion := version.IncPatch() uploadChartVersion := version.String() if !notExist { uploadChartVersion = newVersion.String() - klog.Infof("uploadChartVersion: %s", uploadChartVersion) + klog.Infof("uploadChartVersion to %s", uploadChartVersion) err = helm.UpgradeChartVersion(chart, app, realPath, &newVersion) if err != nil { - klog.Error("upgrade chart version error, ", err) + klog.Errorf("failed to upgrade chart version,app=%s,version=%s,err=%v", app, uploadChartVersion, err) return "", err } } backupAndRestoreFile := func(orig, bak string) (func(), error) { - klog.Info("backup ", orig) + klog.Infof("backup origin path=%s", orig) data, err := os.ReadFile(orig) if err != nil { - klog.Error("read origin file error, ", err, ", ", orig) + klog.Errorf("failed to read origin file path=%s,err=%v", orig, err) return nil, err } err = os.WriteFile(bak, data, 0644) if err != nil { - klog.Error("backup origin file error, ", err, ", ", bak) + klog.Errorf("failed to backup origin file %s,err=%v", bak, err) return nil, err } return func() { - klog.Info("restore ", orig) + klog.Infof("restore file path=%s", orig) err = os.Remove(orig) if err != nil { - klog.Error(err) + klog.Errorf("failed to remove file path=%s", orig) return } err = os.Rename(bak, orig) if err != nil { - klog.Error(err) + klog.Errorf("failed to rename from path=%s to path=%s", bak, orig) } }, nil @@ -90,20 +91,21 @@ func (c *updateRepo) Run(ctx context.Context, owner, app string, notExist bool) chartYamlBak := filepath.Join(realPath, "Chart.bak") chartDeferFunc, err := backupAndRestoreFile(chartYaml, chartYamlBak) if err != nil { + klog.Errorf("failed to get chartDeferFunc %v", err) return "", err } defer chartDeferFunc() err = helm.UpdateChartName(chart, app, realPath) if err != nil { - klog.Error("update chart name error, ", err) + klog.Errorf("failed to update chart app=%s,path=%s,err=%v", app, realPath, err) return "", err } if !notExist { err = helm.UpdateAppCfgVersion(owner, realPath, &newVersion) if err != nil { - klog.Error("update OlaresManifest.yaml metadata.version error, ", err) + klog.Errorf("failed to update OlaresManifest.yaml metadata.version %v", err) return "", err } } @@ -112,12 +114,14 @@ func (c *updateRepo) Run(ctx context.Context, owner, app string, notExist bool) appcfgBak := filepath.Join(realPath, "OlaresManifest.yaml.bak") appcfgDeferFunc, err := backupAndRestoreFile(appcfg, appcfgBak) if err != nil { + klog.Errorf("failed to get appcfg defer func %v", err) return "", err } defer appcfgDeferFunc() err = helm.UpdateAppCfgName(owner, app, realPath) if err != nil { + klog.Errorf("failed to update app cfg name app=%s,path=%s,err=%v", app, realPath, err) return "", err } @@ -133,7 +137,7 @@ func (c *updateRepo) Run(ctx context.Context, owner, app string, notExist bool) if !notExist { err = deleteOldTgz(owner, app+"-dev", newVersion.String()) if err != nil { - klog.Info("delete chartmuseum old tgz error, ", err) + klog.Errorf("failed to delete chart repo old tgz %v", err) } } diff --git a/pkg/development/command/utils.go b/pkg/development/command/utils.go index f5e0c68..03b24fa 100644 --- a/pkg/development/command/utils.go +++ b/pkg/development/command/utils.go @@ -24,11 +24,13 @@ func copyDir(src string, dest string) error { f, err := os.Open(src) if err != nil { + klog.Errorf("failed to open file path=%s, err=%v", src, err) return err } file, err := f.Stat() if err != nil { + klog.Errorf("failed to stat file path=%s, err=%v", src, err) return err } if !file.IsDir() { @@ -37,11 +39,13 @@ func copyDir(src string, dest string) error { err = os.Mkdir(dest, 0755) if err != nil { + klog.Errorf("failed to mkdir path=%v,err=%v", dest, err) return err } files, err := os.ReadDir(src) if err != nil { + klog.Errorf("failed to read dir path=%v,err=%v", src, err) return err } @@ -51,6 +55,7 @@ func copyDir(src string, dest string) error { err = copyDir(src+"/"+f.Name(), dest+"/"+f.Name()) if err != nil { + klog.Errorf("failed to copy dir from %s to %s, err=%v", src+"/"+f.Name(), dest+"/"+f.Name()) return err } @@ -60,12 +65,14 @@ func copyDir(src string, dest string) error { content, err := os.ReadFile(src + "/" + f.Name()) if err != nil { + klog.Errorf("failed to read file path=%v, err=%v", src+"/"+f.Name(), err) return err } err = os.WriteFile(dest+"/"+f.Name(), content, 0755) if err != nil { + klog.Errorf("failed to write file path=%s,err=%v", dest+"/"+f.Name(), err) return err } @@ -93,33 +100,34 @@ func AggregateErrs(errs []error) error { } func BackupAndRestoreFile(orig, bak string) (func(), error) { - klog.Info("backup ", orig) + klog.Infof("backup path=%s", orig) data, err := os.ReadFile(orig) if err != nil { - klog.Error("read origin file error, ", err, ", ", orig) + klog.Errorf("failed to read origin file path=%s,err=%v", orig, err) return nil, err } err = os.MkdirAll(filepath.Dir(bak), 0755) if err != nil { + klog.Errorf("failed to mkdir dir=%s, err=%v", filepath.Dir(bak), err) return nil, err } err = os.WriteFile(bak, data, 0644) if err != nil { - klog.Error("backup origin file error, ", err, ", ", bak) + klog.Errorf("failed to backup origin file %s, err=%v", bak, err) return nil, err } return func() { - klog.Info("restore ", orig) + klog.Infof("restore path=%s", orig) err = os.Remove(orig) if err != nil { - klog.Error(err) + klog.Errorf("failed to remove path=%s", orig) return } err = os.Rename(bak, orig) if err != nil { - klog.Error(err) + klog.Errorf("failed to rename from %s to %s,err=%v", bak, orig, err) } }, nil diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index d7ce8df..cb085a8 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -18,10 +18,12 @@ func GetAdminUsername(ctx context.Context) (string, error) { } kubeConfig, err := ctrl.GetConfig() if err != nil { + klog.Errorf("failed to get kube config %v", err) return "", err } client, err := dynamic.NewForConfig(kubeConfig) if err != nil { + klog.Errorf("failed get get client %v", err) return "", err } data, err := client.Resource(gvr).List(ctx, metav1.ListOptions{}) @@ -49,10 +51,12 @@ func GetAdminUsername(ctx context.Context) (string, error) { func GetAppConfig(owner string, data []byte) (*oachecker.AppConfiguration, error) { admin, err := GetAdminUsername(context.TODO()) if err != nil { + klog.Errorf("failed to get admin %v", err) return nil, err } isAdmin, err := IsAdmin(context.TODO(), owner) if err != nil { + klog.Errorf("failed to check user %s is admin %v", owner, err) return nil, err } @@ -82,10 +86,12 @@ func GetAdminUserList(ctx context.Context) ([]string, error) { } kubeConfig, err := ctrl.GetConfig() if err != nil { + klog.Errorf("failed to get kube config %v", err) return adminUserList, err } client, err := dynamic.NewForConfig(kubeConfig) if err != nil { + klog.Errorf("failed to new kube client %v", err) return adminUserList, err } data, err := client.Resource(gvr).List(ctx, metav1.ListOptions{}) @@ -111,6 +117,7 @@ func GetAdminUserList(ctx context.Context) ([]string, error) { func IsAdmin(ctx context.Context, owner string) (bool, error) { adminList, err := GetAdminUserList(ctx) if err != nil { + klog.Errorf("failed to get admin user list %v", err) return false, err } for _, user := range adminList {