diff --git a/api/main.go b/api/main.go index f93c5a9ba..8d33fd677 100644 --- a/api/main.go +++ b/api/main.go @@ -104,6 +104,7 @@ func hostApi(socketHarOutputChannel chan<- *tap.OutputChannelItem) { } routes.WebSocketRoutes(app, &eventHandlers) routes.EntriesRoutes(app) + routes.MetadataRoutes(app) routes.NotFoundRoute(app) utils.StartServer(app) diff --git a/api/pkg/controllers/metadata_controller.go b/api/pkg/controllers/metadata_controller.go new file mode 100644 index 000000000..6a1b07e9b --- /dev/null +++ b/api/pkg/controllers/metadata_controller.go @@ -0,0 +1,14 @@ +package controllers + +import ( + "github.com/gofiber/fiber/v2" +) + +type VersionResponse struct { + SemVer string `json:"semver"` +} + +func GetVersion(c *fiber.Ctx) error { + resp := VersionResponse{SemVer: "1.2.3"} + return c.Status(fiber.StatusOK).JSON(resp) +} diff --git a/api/pkg/routes/public_routes.go b/api/pkg/routes/entries_routes.go similarity index 100% rename from api/pkg/routes/public_routes.go rename to api/pkg/routes/entries_routes.go diff --git a/api/pkg/routes/metadata_routes.go b/api/pkg/routes/metadata_routes.go new file mode 100644 index 000000000..ba881a5b0 --- /dev/null +++ b/api/pkg/routes/metadata_routes.go @@ -0,0 +1,13 @@ +package routes + +import ( + "github.com/gofiber/fiber/v2" + "mizuserver/pkg/controllers" +) + +// EntriesRoutes func for describe group of public routes. +func MetadataRoutes(fiberApp *fiber.App) { + routeGroup := fiberApp.Group("/metadata") + + routeGroup.Get("/version", controllers.GetVersion) +} diff --git a/cli/Makefile b/cli/Makefile index b228e9fd1..0d8acf1f5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -3,6 +3,7 @@ COMMIT_HASH=$(shell git rev-parse HEAD) GIT_BRANCH=$(shell git branch --show-current | tr '[:upper:]' '[:lower:]') GIT_VERSION=$(shell git branch --show-current | tr '[:upper:]' '[:lower:]') BUILD_TIMESTAMP=$(shell date +%s) +SEM_VER=0.0.0 .PHONY: help .DEFAULT_GOAL := help diff --git a/cli/cmd/tap.go b/cli/cmd/tap.go index 037ad4944..245b3d7df 100644 --- a/cli/cmd/tap.go +++ b/cli/cmd/tap.go @@ -97,7 +97,7 @@ func init() { tapCmd.Flags().Uint16VarP(&mizuTapOptions.SleepIntervalSec, "upload-interval", "", 10, "Interval in seconds for uploading data to UP9") tapCmd.Flags().BoolVarP(&mizuTapOptions.AllNamespaces, "all-namespaces", "A", false, "Tap all namespaces") tapCmd.Flags().StringVarP(&mizuTapOptions.KubeConfigPath, "kube-config", "k", "", "Path to kube-config file") - tapCmd.Flags().StringVarP(&mizuTapOptions.MizuImage, "mizu-image", "", fmt.Sprintf("gcr.io/up9-docker-hub/mizu/%s:latest", mizu.Branch), "Custom image for mizu collector") + tapCmd.Flags().StringVarP(&mizuTapOptions.MizuImage, "mizu-image", "", fmt.Sprintf("gcr.io/up9-docker-hub/mizu/%s:%s", mizu.Branch, mizu.SemVer), "Custom image for mizu collector") tapCmd.Flags().StringArrayVarP(&mizuTapOptions.PlainTextFilterRegexes, "regex-masking", "r", nil, "List of regex expressions that are used to filter matching values from text/plain http bodies") tapCmd.Flags().StringVarP(&direction, "direction", "", "in", "Record traffic that goes in this direction (relative to the tapped pod): in/any") tapCmd.Flags().BoolVar(&mizuTapOptions.HideHealthChecks, "hide-healthchecks", false, "hides requests with kube-probe or prometheus user-agent headers") diff --git a/shared/semver/semver.go b/shared/semver/semver.go new file mode 100644 index 000000000..f27ca33f0 --- /dev/null +++ b/shared/semver/semver.go @@ -0,0 +1,28 @@ +package semver + +import ( + "regexp" +) + +type SemVersion string + +func (v SemVersion) Breakdown() (string, string, string) { + re := regexp.MustCompile(`\d+`) + breakdown := re.FindAllString(string(v), 3) + return breakdown[0], breakdown[1], breakdown[2] +} + +func (v SemVersion) Major() string { + major, _, _ := v.Breakdown() + return major +} + +func (v SemVersion) Minor() string { + _, minor, _ := v.Breakdown() + return minor +} + +func (v SemVersion) Patch() string { + _, _, patch := v.Breakdown() + return patch +}