From 2f2a1bdc26ec48b6dd60aa7ac50c7759010e60bb Mon Sep 17 00:00:00 2001 From: Florent Gluck <florent.gluck@hesge.ch> Date: Fri, 13 Dec 2024 10:27:59 +0100 Subject: [PATCH] client: rework template code (libclient + client) --- src/client/cmdLogin/login.go | 4 ++-- src/client/cmdTemplate/templateCreate.go | 6 ++--- src/client/cmdTemplate/templateDel.go | 4 ++-- src/client/cmdTemplate/templateEdit.go | 25 +++++++++----------- src/client/cmdTemplate/templateExportDisk.go | 20 ++++------------ src/client/cmdTemplate/templateList.go | 4 ++-- src/client/cmdTemplate/templateListSingle.go | 15 ++++++------ src/libclient/template/templateEdit.go | 18 ++++++++++---- src/libclient/template/templateExportDisk.go | 17 ++++++++----- src/libclient/user/userCreate.go | 2 +- 10 files changed, 57 insertions(+), 58 deletions(-) diff --git a/src/client/cmdLogin/login.go b/src/client/cmdLogin/login.go index 3cfc721..7f3de35 100644 --- a/src/client/cmdLogin/login.go +++ b/src/client/cmdLogin/login.go @@ -42,14 +42,14 @@ func (cmd *Login) Run(args []string) int { bytePwd, err := term.ReadPassword(int(syscall.Stdin)) u.PrintlnErr("") if err != nil { - u.PrintlnErr(err.Error()) + u.PrintlnErr(err) return 1 } pwd := string(bytePwd) token, err := login.GetToken(email, pwd) if err != nil { - u.PrintlnErr("Error: " + err.Error()) + u.PrintlnErr(err) return 1 } diff --git a/src/client/cmdTemplate/templateCreate.go b/src/client/cmdTemplate/templateCreate.go index 191a63f..3af2fd8 100644 --- a/src/client/cmdTemplate/templateCreate.go +++ b/src/client/cmdTemplate/templateCreate.go @@ -49,16 +49,16 @@ func (cmd *Create) Run(args []string) int { template, err := libclient.TemplateCreate(vmID, name, access) if err != nil { - u.PrintlnErr("Error: " + err.Error()) + u.PrintlnErr(err) return 1 } templateStr, err := template.String() if err != nil { - u.PrintlnErr("Error: " + err.Error()) + u.PrintlnErr(err) return 1 } + u.Println("Template successfully created:") u.Println(templateStr) - return 0 } diff --git a/src/client/cmdTemplate/templateDel.go b/src/client/cmdTemplate/templateDel.go index bd399cf..feb619d 100644 --- a/src/client/cmdTemplate/templateDel.go +++ b/src/client/cmdTemplate/templateDel.go @@ -40,10 +40,10 @@ func (cmd *Del) Run(args []string) int { err := libclient.TemplateDel(tplID) if err != nil { - u.PrintlnErr("Failed deleting template \"" + tplID + "\": " + err.Error()) + u.PrintlnErr(err) return 1 } - u.Println("Template \"" + tplID + "\" deleted") + u.Println("Template \"" + tplID + "\" successfully deleted") return 0 } diff --git a/src/client/cmdTemplate/templateEdit.go b/src/client/cmdTemplate/templateEdit.go index 4ceb100..1996d0c 100644 --- a/src/client/cmdTemplate/templateEdit.go +++ b/src/client/cmdTemplate/templateEdit.go @@ -54,23 +54,20 @@ func (cmd *Edit) Run(args []string) int { } tplID := args[0] - statusCode := 0 - - resp, err := libclient.TemplateEdit(tplID, *p) + template, err := libclient.TemplateEdit(tplID, *p) if err != nil { - u.PrintlnErr("Failed editing template \"" + tplID + "\": " + err.Error()) - statusCode = 1 - } else { - if resp.IsSuccess() { - u.Println("Successfully edited template \"" + tplID + "\":") - u.Println(resp.String()) - } else { - u.PrintlnErr("Failed editing template \"" + tplID + "\": " + resp.Status() + ": " + resp.String()) - statusCode = 1 - } + u.PrintlnErr(err) + return 1 } - return statusCode + templateStr, err := template.String() + if err != nil { + u.PrintlnErr(err) + return 1 + } + u.Println("Template \"" + tplID + "\" successfully edited:") + u.Println(templateStr) + return 0 } func (cmd *Edit) parseArgs(args []string) (*params.TplEdit, error) { diff --git a/src/client/cmdTemplate/templateExportDisk.go b/src/client/cmdTemplate/templateExportDisk.go index 489cefe..3499413 100644 --- a/src/client/cmdTemplate/templateExportDisk.go +++ b/src/client/cmdTemplate/templateExportDisk.go @@ -41,23 +41,13 @@ func (cmd *ExportDisk) Run(args []string) int { tplID := args[0] outputFile := args[1] - statusCode := 0 - u.Println("Exporting disk from template \"" + tplID + "\" into " + outputFile + " ...") - resp, err := libclient.TemplateExportDisk(tplID, outputFile) + err := libclient.TemplateExportDisk(tplID, outputFile) if err != nil { - u.PrintlnErr("Failed: " + err.Error()) - statusCode = 1 - } else { - if resp.IsSuccess() { - u.Println("Successfully exported disk into " + outputFile) - } else { - errorMsg, _ := u.FileToString(outputFile) - u.PrintlnErr("Failed: " + resp.Status() + ": " + errorMsg) - statusCode = 1 - } + u.PrintlnErr(err) + return 1 } - - return statusCode + u.Println("Successfully exported template disk into " + outputFile) + return 0 } diff --git a/src/client/cmdTemplate/templateList.go b/src/client/cmdTemplate/templateList.go index 24522bd..6941a14 100644 --- a/src/client/cmdTemplate/templateList.go +++ b/src/client/cmdTemplate/templateList.go @@ -69,7 +69,7 @@ func (cmd *List) printFilteredTemplates(args []string, route string) int { templates, err := cmd.getFilteredTemplates(route, args) if err != nil { - u.PrintlnErr("Error: " + err.Error()) + u.PrintlnErr(err) return 1 } @@ -77,7 +77,7 @@ func (cmd *List) printFilteredTemplates(args []string, route string) int { for _, template := range templates { str, err := template.String() if err != nil { - u.PrintlnErr("Error: failed decoding template " + template.ID.String() + " to string. Skipped.") + u.PrintlnErr("Failed decoding template " + template.ID.String() + ". Template skipped.") } else { u.Println(str) } diff --git a/src/client/cmdTemplate/templateListSingle.go b/src/client/cmdTemplate/templateListSingle.go index aaed520..9b8275e 100644 --- a/src/client/cmdTemplate/templateListSingle.go +++ b/src/client/cmdTemplate/templateListSingle.go @@ -35,19 +35,18 @@ func (cmd *ListSingle) Run(args []string) int { return 1 } - uuid := args[0] - template, err := libclient.GetTemplate(uuid) + tplID := args[0] + template, err := libclient.GetTemplate(tplID) if err != nil { - u.PrintlnErr("Error: " + err.Error()) + u.PrintlnErr(err) return 1 } - str, err := template.String() + templateStr, err := template.String() if err != nil { - u.PrintlnErr("Error: failed decoding template " + template.ID.String() + " to string.") - } else { - u.Println(str) + u.PrintlnErr(err) + return 1 } - + u.Println(templateStr) return 0 } diff --git a/src/libclient/template/templateEdit.go b/src/libclient/template/templateEdit.go index 83aebcc..3fe5988 100644 --- a/src/libclient/template/templateEdit.go +++ b/src/libclient/template/templateEdit.go @@ -1,13 +1,14 @@ package template import ( + "encoding/json" + "errors" "nexus-common/params" + "nexus-common/template" g "nexus-libclient/globals" - - "github.com/go-resty/resty/v2" ) -func TemplateEdit(tplID string, p params.TplEdit) (*resty.Response, error) { +func TemplateEdit(tplID string, p params.TplEdit) (*template.TemplateSerialized, error) { client := g.GetInstance().Client host := g.GetInstance().Host @@ -15,6 +16,13 @@ func TemplateEdit(tplID string, p params.TplEdit) (*resty.Response, error) { if err != nil { return nil, err } - - return resp, nil + if resp.IsSuccess() { + var tpl template.TemplateSerialized + if err := json.Unmarshal(resp.Body(), &tpl); err != nil { + return nil, err + } + return &tpl, nil + } else { + return nil, errors.New(resp.Status() + ": " + resp.String()) + } } diff --git a/src/libclient/template/templateExportDisk.go b/src/libclient/template/templateExportDisk.go index 8d30989..31a0f7b 100644 --- a/src/libclient/template/templateExportDisk.go +++ b/src/libclient/template/templateExportDisk.go @@ -1,19 +1,24 @@ package template import ( + "errors" + u "nexus-client/utils" g "nexus-libclient/globals" - - "github.com/go-resty/resty/v2" ) -func TemplateExportDisk(tplID, outputFile string) (*resty.Response, error) { +func TemplateExportDisk(tplID, outputFile string) error { client := g.GetInstance().Client host := g.GetInstance().Host resp, err := client.R().SetOutput(outputFile).Get(host + "/templates/" + tplID + "/disk") if err != nil { - return nil, err + return err + } else { + if resp.IsSuccess() { + return nil + } else { + errorMsg, _ := u.FileToString(outputFile) + return errors.New("Failed: " + resp.Status() + ": " + errorMsg) + } } - - return resp, nil } diff --git a/src/libclient/user/userCreate.go b/src/libclient/user/userCreate.go index 8acd519..616aaa4 100644 --- a/src/libclient/user/userCreate.go +++ b/src/libclient/user/userCreate.go @@ -12,7 +12,7 @@ func UserCreate(p params.UserWithPwd) error { resp, err := client.R().SetBody(p).Post(host + "/users") if err != nil { - return errors.New("Error: " + err.Error()) + return err } if resp.IsSuccess() { -- GitLab