github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/client/template.go (about) 1 package client 2 3 import ( 4 "encoding/json" 5 "net/http" 6 7 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 8 ) 9 10 // NewTemplateClient creates new Template client 11 func NewTemplateClient(templateTransport Transport[testkube.Template]) TemplateClient { 12 return TemplateClient{ 13 templateTransport: templateTransport, 14 } 15 } 16 17 // TemplateClient is a client for templates 18 type TemplateClient struct { 19 templateTransport Transport[testkube.Template] 20 } 21 22 // GetTemplate gets template by name 23 func (c TemplateClient) GetTemplate(name string) (template testkube.Template, err error) { 24 uri := c.templateTransport.GetURI("/templates/%s", name) 25 return c.templateTransport.Execute(http.MethodGet, uri, nil, nil) 26 } 27 28 // ListTemplates list all templates 29 func (c TemplateClient) ListTemplates(selector string) (templates testkube.Templates, err error) { 30 uri := c.templateTransport.GetURI("/templates") 31 params := map[string]string{ 32 "selector": selector, 33 } 34 35 return c.templateTransport.ExecuteMultiple(http.MethodGet, uri, nil, params) 36 } 37 38 // CreateTemplate creates new Template Custom Resource 39 func (c TemplateClient) CreateTemplate(options CreateTemplateOptions) (template testkube.Template, err error) { 40 uri := c.templateTransport.GetURI("/templates") 41 request := testkube.TemplateCreateRequest(options) 42 43 body, err := json.Marshal(request) 44 if err != nil { 45 return template, err 46 } 47 48 return c.templateTransport.Execute(http.MethodPost, uri, body, nil) 49 } 50 51 // UpdateTemplate updates Template Custom Resource 52 func (c TemplateClient) UpdateTemplate(options UpdateTemplateOptions) (template testkube.Template, err error) { 53 name := "" 54 if options.Name != nil { 55 name = *options.Name 56 } 57 58 uri := c.templateTransport.GetURI("/templates/%s", name) 59 request := testkube.TemplateUpdateRequest(options) 60 61 body, err := json.Marshal(request) 62 if err != nil { 63 return template, err 64 } 65 66 return c.templateTransport.Execute(http.MethodPatch, uri, body, nil) 67 } 68 69 // DeleteTemplates deletes all templates 70 func (c TemplateClient) DeleteTemplates(selector string) (err error) { 71 uri := c.templateTransport.GetURI("/templates") 72 return c.templateTransport.Delete(uri, selector, true) 73 } 74 75 // DeleteTemplate deletes single template by name 76 func (c TemplateClient) DeleteTemplate(name string) (err error) { 77 uri := c.templateTransport.GetURI("/templates/%s", name) 78 return c.templateTransport.Delete(uri, "", true) 79 }