github.com/kubeshop/testkube@v1.17.23/internal/app/api/v1/configs.go (about) 1 package v1 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/gofiber/fiber/v2" 8 "go.mongodb.org/mongo-driver/mongo" 9 10 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 11 ) 12 13 // GetConfigsHandler returns configuration 14 func (s TestkubeAPI) GetConfigsHandler() fiber.Handler { 15 return func(c *fiber.Ctx) error { 16 ctx := c.Context() 17 config, err := s.ConfigMap.Get(ctx) 18 if err != nil { 19 if err == mongo.ErrNoDocuments { 20 return s.Error(c, http.StatusNotFound, fmt.Errorf("failed to get config: db found no config: %w", err)) 21 } 22 return s.Error(c, http.StatusInternalServerError, fmt.Errorf("failed to get config: %w", err)) 23 } 24 return c.JSON(config) 25 } 26 } 27 28 // UpdateConfigsHandler update configuration handler 29 func (s TestkubeAPI) UpdateConfigsHandler() fiber.Handler { 30 return func(c *fiber.Ctx) error { 31 ctx := c.Context() 32 errPrefix := "failed to update config" 33 34 config, err := s.ConfigMap.Get(ctx) 35 if err != nil { 36 if err == mongo.ErrNoDocuments { 37 return s.Error(c, http.StatusNotFound, fmt.Errorf("%s: db found no config: %w", errPrefix, err)) 38 } 39 return s.Error(c, http.StatusInternalServerError, fmt.Errorf("%s: unable to get config: %w", errPrefix, err)) 40 } 41 42 var request testkube.Config 43 err = c.BodyParser(&request) 44 if err != nil { 45 return s.Error(c, http.StatusBadRequest, fmt.Errorf("%s: config request body invalid: %w", errPrefix, err)) 46 } 47 s.Log.Warnw("#######", "request", config) 48 config.EnableTelemetry = request.EnableTelemetry 49 s.Log.Warnw("#######", "request", config) 50 _, err = s.ConfigMap.Upsert(ctx, config) 51 if err != nil { 52 return s.Error(c, http.StatusInternalServerError, fmt.Errorf("%s: db could not update config: %w", errPrefix, err)) 53 } 54 return c.JSON(config) 55 } 56 }