From b07f10310c1a63c1c57fcc21440afe0bb070ae73 Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Thu, 29 Jan 2026 10:31:34 +0100 Subject: [PATCH 1/5] Rename oc3 subsystems and packages * apifeeder => feeder * actiond => runner * comet => messenger --- Makefile | 2 +- actions.go | 6 ++--- cdb/db_instances.go | 4 ++-- cmd.go | 24 +++++++++---------- apifeeder.go => feeder.go | 18 +++++++------- {apifeeder => feeder}/api.yaml | 0 {apifeeder => feeder}/codegen_server.yaml | 2 +- {apifeeder => feeder}/codegen_server_gen.go | 4 ++-- {apifeeder => feeder}/codegen_type.yaml | 2 +- {apifeeder => feeder}/codegen_type_gen.go | 4 ++-- {apifeeder => feeder}/main.go | 2 +- .../get_openapi.go | 2 +- .../get_version.go | 4 ++-- {apifeederhandlers => feederhandlers}/log.go | 2 +- {apifeederhandlers => feederhandlers}/main.go | 6 ++--- .../middleware-ui.go | 2 +- .../middleware.go | 2 +- .../post_feed_daemon_ping.go | 8 +++---- .../post_feed_daemon_status.go | 10 ++++---- .../post_feed_instance_action.go | 8 +++---- .../post_feed_instance_resource_info.go | 6 ++--- .../post_feed_instance_status.go | 8 +++---- .../post_feed_node_disk.go | 6 ++--- .../post_feed_object_config.go | 6 ++--- .../post_feed_system.go | 2 +- .../problems.go | 6 ++--- .../put_feed_instance_action.go | 6 ++--- .../redis.go | 2 +- .../redis_object_config_to_feed.go | 2 +- comet.go => messenger.go | 7 +++--- {comet => messenger}/main.go | 2 +- {actiond => runner}/main.go | 2 +- scheduler.go | 2 +- worker.go | 2 +- worker/job_feed_daemon_ping.go | 4 ++-- worker/job_feed_instance_action.go | 6 ++--- worker/job_feed_instance_resource_info.go | 4 ++-- 37 files changed, 92 insertions(+), 93 deletions(-) rename apifeeder.go => feeder.go (77%) rename {apifeeder => feeder}/api.yaml (100%) rename {apifeeder => feeder}/codegen_server.yaml (83%) rename {apifeeder => feeder}/codegen_server_gen.go (99%) rename {apifeeder => feeder}/codegen_type.yaml (80%) rename {apifeeder => feeder}/codegen_type_gen.go (98%) rename {apifeeder => feeder}/main.go (89%) rename {apifeederhandlers => feederhandlers}/get_openapi.go (91%) rename {apifeederhandlers => feederhandlers}/get_version.go (82%) rename {apifeederhandlers => feederhandlers}/log.go (89%) rename {apifeederhandlers => feederhandlers}/main.go (74%) rename {apifeederhandlers => feederhandlers}/middleware-ui.go (94%) rename {apifeederhandlers => feederhandlers}/middleware.go (98%) rename {apifeederhandlers => feederhandlers}/post_feed_daemon_ping.go (90%) rename {apifeederhandlers => feederhandlers}/post_feed_daemon_status.go (92%) rename {apifeederhandlers => feederhandlers}/post_feed_instance_action.go (91%) rename {apifeederhandlers => feederhandlers}/post_feed_instance_resource_info.go (94%) rename {apifeederhandlers => feederhandlers}/post_feed_instance_status.go (94%) rename {apifeederhandlers => feederhandlers}/post_feed_node_disk.go (94%) rename {apifeederhandlers => feederhandlers}/post_feed_object_config.go (94%) rename {apifeederhandlers => feederhandlers}/post_feed_system.go (97%) rename {apifeederhandlers => feederhandlers}/problems.go (84%) rename {apifeederhandlers => feederhandlers}/put_feed_instance_action.go (94%) rename {apifeederhandlers => feederhandlers}/redis.go (98%) rename {apifeederhandlers => feederhandlers}/redis_object_config_to_feed.go (96%) rename comet.go => messenger.go (85%) rename {comet => messenger}/main.go (99%) rename {actiond => runner}/main.go (99%) diff --git a/Makefile b/Makefile index 2273050..9ff2ccd 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ deps: $(GOCMD) get -tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest api: - $(GOGEN) ./apifeeder + $(GOGEN) ./feeder $(GOGEN) ./api clean: diff --git a/actions.go b/actions.go index ba1907e..e6ffc66 100644 --- a/actions.go +++ b/actions.go @@ -3,10 +3,10 @@ package main import ( "context" - "github.com/opensvc/oc3/actiond" + "github.com/opensvc/oc3/runner" ) -func actions() error { +func startRunner() error { if err := setup(); err != nil { return err } @@ -15,7 +15,7 @@ func actions() error { return err } - ad := &actiond.ActionDaemon{ + ad := &runner.ActionDaemon{ DB: db, Ev: newEv(), Ctx: context.Background(), diff --git a/cdb/db_instances.go b/cdb/db_instances.go index 54a42cd..359c656 100644 --- a/cdb/db_instances.go +++ b/cdb/db_instances.go @@ -8,7 +8,7 @@ import ( "log/slog" "time" - "github.com/opensvc/oc3/apifeeder" + "github.com/opensvc/oc3/feeder" ) type ( @@ -549,7 +549,7 @@ func (oDb *DB) InstanceResourcesDeleteObsolete(ctx context.Context, svcID, nodeI return nil } -func (oDb *DB) InstanceResourceInfoUpdate(ctx context.Context, svcID, nodeID string, data apifeeder.InstanceResourceInfo) error { +func (oDb *DB) InstanceResourceInfoUpdate(ctx context.Context, svcID, nodeID string, data feeder.InstanceResourceInfo) error { defer logDuration("InstanceResourceInfoUpdate "+svcID+"@"+nodeID, time.Now()) const ( query = "" + diff --git a/cmd.go b/cmd.go index 56787cf..b6f79b1 100644 --- a/cmd.go +++ b/cmd.go @@ -19,7 +19,7 @@ func cmdWorker() *cobra.Command { var maxRunners int cmd := &cobra.Command{ Use: "worker", - Short: "run jobs from a list of queues", + Short: "run queued jobs", RunE: func(cmd *cobra.Command, args []string) error { if err := setup(); err != nil { return err @@ -28,7 +28,7 @@ func cmdWorker() *cobra.Command { for _, q := range args { queues = append(queues, cachekeys.QueuePrefix+q) } - return work(maxRunners, queues) + return startWorker(maxRunners, queues) }, } cmd.Flags().IntVar(&maxRunners, "runners", 1, "maximun number of worker job runners") @@ -37,13 +37,13 @@ func cmdWorker() *cobra.Command { func cmdApiFeeder() *cobra.Command { return &cobra.Command{ - Use: "apifeeder", - Short: "serve the feeder api", + Use: "feeder", + Short: "serve the data feed api to nodes", RunE: func(cmd *cobra.Command, args []string) error { if err := setup(); err != nil { return err } - return startApiFeeder() + return startFeeder() }, } } @@ -89,27 +89,27 @@ func cmdScheduler() *cobra.Command { Use: "scheduler", Short: "start running db maintenance tasks", RunE: func(cmd *cobra.Command, args []string) error { - return schedule() + return startScheduler() }, } } func cmdActions() *cobra.Command { return &cobra.Command{ - Use: "actions", - Short: "start the daemon dispatching actions to the agents", + Use: "runner", + Short: "dispatch actions to nodes", RunE: func(cmd *cobra.Command, args []string) error { - return actions() + return startRunner() }, } } func cmdComet() *cobra.Command { return &cobra.Command{ - Use: "comet", - Short: "websocket group messaging daemon", + Use: "messenger", + Short: "notify clients of data changes", RunE: func(cmd *cobra.Command, args []string) error { - return cometRun() + return startMessenger() }, } } diff --git a/apifeeder.go b/feeder.go similarity index 77% rename from apifeeder.go rename to feeder.go index 5a81426..26d45c0 100644 --- a/apifeeder.go +++ b/feeder.go @@ -10,17 +10,17 @@ import ( "github.com/shaj13/go-guardian/v2/auth/strategies/union" "github.com/spf13/viper" - "github.com/opensvc/oc3/apifeeder" - "github.com/opensvc/oc3/apifeederhandlers" + "github.com/opensvc/oc3/feeder" + "github.com/opensvc/oc3/feederhandlers" "github.com/opensvc/oc3/xauth" ) -func startApiFeeder() error { +func startFeeder() error { addr := viper.GetString("listener_feed.addr") - return listenAndServeApiFeeder(addr) + return listenAndServeFeeder(addr) } -func listenAndServeApiFeeder(addr string) error { +func listenAndServeFeeder(addr string) error { enableUI := viper.GetBool("listener_feed.ui.enable") db, err := newDatabase() @@ -46,12 +46,12 @@ func listenAndServeApiFeeder(addr string) error { ) if viper.GetBool("listener_feed.metrics.enable") { slog.Info("add handler /oc3/feed/api/public/metrics") - e.Use(echoprometheus.NewMiddleware("oc3_apifeeder")) + e.Use(echoprometheus.NewMiddleware("oc3_feeder")) e.GET("/oc3/feed/api/public/metrics", echoprometheus.NewHandler()) } - e.Use(apifeederhandlers.AuthMiddleware(strategy)) + e.Use(feederhandlers.AuthMiddleware(strategy)) slog.Info("register openapi handlers with base url: /oc3/feed/api") - apifeeder.RegisterHandlersWithBaseURL(e, &apifeederhandlers.Api{ + feeder.RegisterHandlersWithBaseURL(e, &feederhandlers.Api{ DB: db, Redis: redisClient, UI: enableUI, @@ -67,5 +67,5 @@ func listenAndServeApiFeeder(addr string) error { func registerAPIUI(e *echo.Echo) { slog.Info("add handler /oc3/feed/api/docs/") g := e.Group("/oc3/feed/api/docs") - g.Use(apifeederhandlers.UIMiddleware(context.Background())) + g.Use(feederhandlers.UIMiddleware(context.Background())) } diff --git a/apifeeder/api.yaml b/feeder/api.yaml similarity index 100% rename from apifeeder/api.yaml rename to feeder/api.yaml diff --git a/apifeeder/codegen_server.yaml b/feeder/codegen_server.yaml similarity index 83% rename from apifeeder/codegen_server.yaml rename to feeder/codegen_server.yaml index 9627e9a..5de029f 100644 --- a/apifeeder/codegen_server.yaml +++ b/feeder/codegen_server.yaml @@ -1,4 +1,4 @@ -package: apifeeder +package: feeder generate: echo-server: true models: false diff --git a/apifeeder/codegen_server_gen.go b/feeder/codegen_server_gen.go similarity index 99% rename from apifeeder/codegen_server_gen.go rename to feeder/codegen_server_gen.go index 7b7fba1..f94a482 100644 --- a/apifeeder/codegen_server_gen.go +++ b/feeder/codegen_server_gen.go @@ -1,7 +1,7 @@ -// Package apifeeder provides primitives to interact with the openapi HTTP API. +// Package feeder provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT. -package apifeeder +package feeder import ( "bytes" diff --git a/apifeeder/codegen_type.yaml b/feeder/codegen_type.yaml similarity index 80% rename from apifeeder/codegen_type.yaml rename to feeder/codegen_type.yaml index 76fc3ee..0977866 100644 --- a/apifeeder/codegen_type.yaml +++ b/feeder/codegen_type.yaml @@ -1,4 +1,4 @@ -package: apifeeder +package: feeder generate: models: true embedded-spec: false diff --git a/apifeeder/codegen_type_gen.go b/feeder/codegen_type_gen.go similarity index 98% rename from apifeeder/codegen_type_gen.go rename to feeder/codegen_type_gen.go index dc9143c..5d65ff6 100644 --- a/apifeeder/codegen_type_gen.go +++ b/feeder/codegen_type_gen.go @@ -1,7 +1,7 @@ -// Package apifeeder provides primitives to interact with the openapi HTTP API. +// Package feeder provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT. -package apifeeder +package feeder import ( "time" diff --git a/apifeeder/main.go b/feeder/main.go similarity index 89% rename from apifeeder/main.go rename to feeder/main.go index 6bbecce..faafdc1 100644 --- a/apifeeder/main.go +++ b/feeder/main.go @@ -1,4 +1,4 @@ //go:generate go tool oapi-codegen -config codegen_server.yaml ./api.yaml //go:generate go tool oapi-codegen -config codegen_type.yaml ./api.yaml -package apifeeder +package feeder diff --git a/apifeederhandlers/get_openapi.go b/feederhandlers/get_openapi.go similarity index 91% rename from apifeederhandlers/get_openapi.go rename to feederhandlers/get_openapi.go index 70db7df..d214ce3 100644 --- a/apifeederhandlers/get_openapi.go +++ b/feederhandlers/get_openapi.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "net/http" diff --git a/apifeederhandlers/get_version.go b/feederhandlers/get_version.go similarity index 82% rename from apifeederhandlers/get_version.go rename to feederhandlers/get_version.go index e0de1e8..6b2d9a2 100644 --- a/apifeederhandlers/get_version.go +++ b/feederhandlers/get_version.go @@ -1,11 +1,11 @@ -package apifeederhandlers +package feederhandlers import ( "net/http" "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" + api "github.com/opensvc/oc3/feeder" ) func (a *Api) GetVersion(c echo.Context) error { diff --git a/apifeederhandlers/log.go b/feederhandlers/log.go similarity index 89% rename from apifeederhandlers/log.go rename to feederhandlers/log.go index a7636b8..db5db39 100644 --- a/apifeederhandlers/log.go +++ b/feederhandlers/log.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "log/slog" diff --git a/apifeederhandlers/main.go b/feederhandlers/main.go similarity index 74% rename from apifeederhandlers/main.go rename to feederhandlers/main.go index 44e7c75..b2ff214 100644 --- a/apifeederhandlers/main.go +++ b/feederhandlers/main.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "database/sql" @@ -7,7 +7,7 @@ import ( "github.com/getkin/kin-openapi/openapi3" "github.com/go-redis/redis/v8" - api "github.com/opensvc/oc3/apifeeder" + "github.com/opensvc/oc3/feeder" ) type ( @@ -26,7 +26,7 @@ var ( ) func init() { - if schema, err := api.GetSwagger(); err == nil { + if schema, err := feeder.GetSwagger(); err == nil { SCHEMA = *schema } } diff --git a/apifeederhandlers/middleware-ui.go b/feederhandlers/middleware-ui.go similarity index 94% rename from apifeederhandlers/middleware-ui.go rename to feederhandlers/middleware-ui.go index 90d3935..559f329 100644 --- a/apifeederhandlers/middleware-ui.go +++ b/feederhandlers/middleware-ui.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "context" diff --git a/apifeederhandlers/middleware.go b/feederhandlers/middleware.go similarity index 98% rename from apifeederhandlers/middleware.go rename to feederhandlers/middleware.go index 607ff72..163d093 100644 --- a/apifeederhandlers/middleware.go +++ b/feederhandlers/middleware.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "net/http" diff --git a/apifeederhandlers/post_feed_daemon_ping.go b/feederhandlers/post_feed_daemon_ping.go similarity index 90% rename from apifeederhandlers/post_feed_daemon_ping.go rename to feederhandlers/post_feed_daemon_ping.go index ab7f62f..1e3e50b 100644 --- a/apifeederhandlers/post_feed_daemon_ping.go +++ b/feederhandlers/post_feed_daemon_ping.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "fmt" @@ -7,8 +7,8 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) func (a *Api) PostFeedDaemonPing(c echo.Context) error { @@ -59,10 +59,10 @@ func (a *Api) PostFeedDaemonPing(c echo.Context) error { log.Error(fmt.Sprintf("%s", err)) } log.Info(fmt.Sprintf("accepted %s, cluster id %s need object config: %s", nodeID, clusterID, objects)) - return c.JSON(http.StatusAccepted, api.FeedDaemonPingAccepted{ObjectWithoutConfig: &objects}) + return c.JSON(http.StatusAccepted, feeder.FeedDaemonPingAccepted{ObjectWithoutConfig: &objects}) } } } log.Info(fmt.Sprintf("accepted %s", nodeID)) - return c.JSON(http.StatusAccepted, api.FeedDaemonPingAccepted{}) + return c.JSON(http.StatusAccepted, feeder.FeedDaemonPingAccepted{}) } diff --git a/apifeederhandlers/post_feed_daemon_status.go b/feederhandlers/post_feed_daemon_status.go similarity index 92% rename from apifeederhandlers/post_feed_daemon_status.go rename to feederhandlers/post_feed_daemon_status.go index 19a8625..660d2cb 100644 --- a/apifeederhandlers/post_feed_daemon_status.go +++ b/feederhandlers/post_feed_daemon_status.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "encoding/json" @@ -10,8 +10,8 @@ import ( "github.com/go-redis/redis/v8" "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) func (a *Api) PostFeedDaemonStatus(c echo.Context) error { @@ -40,7 +40,7 @@ func (a *Api) PostFeedDaemonStatus(c echo.Context) error { if err != nil { return JSONProblemf(c, http.StatusInternalServerError, "", "read request body: %s", err) } - postData := &api.PostFeedDaemonStatus{} + postData := &feeder.PostFeedDaemonStatus{} if err := json.Unmarshal(b, postData); err != nil { log.Error(fmt.Sprintf("Unmarshal %s", err)) return JSONProblemf(c, http.StatusBadRequest, "BadRequest", "unexpected body: %s", err) @@ -99,9 +99,9 @@ func (a *Api) PostFeedDaemonStatus(c echo.Context) error { log.Error(fmt.Sprintf("%s", err)) } log.Info(fmt.Sprintf("accepted %s, cluster id %s need object config: %s", nodeID, clusterID, objects)) - return c.JSON(http.StatusAccepted, api.FeedDaemonStatusAccepted{ObjectWithoutConfig: &objects}) + return c.JSON(http.StatusAccepted, feeder.FeedDaemonStatusAccepted{ObjectWithoutConfig: &objects}) } } } - return c.JSON(http.StatusAccepted, api.FeedDaemonStatusAccepted{}) + return c.JSON(http.StatusAccepted, feeder.FeedDaemonStatusAccepted{}) } diff --git a/apifeederhandlers/post_feed_instance_action.go b/feederhandlers/post_feed_instance_action.go similarity index 91% rename from apifeederhandlers/post_feed_instance_action.go rename to feederhandlers/post_feed_instance_action.go index d2c9cab..7576edb 100644 --- a/apifeederhandlers/post_feed_instance_action.go +++ b/feederhandlers/post_feed_instance_action.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "encoding/json" @@ -9,8 +9,8 @@ import ( "github.com/google/uuid" "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) /* @@ -48,7 +48,7 @@ func (a *Api) PostFeedInstanceAction(c echo.Context) error { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload api.PostFeedInstanceActionJSONRequestBody + var payload feeder.PostFeedInstanceActionJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } @@ -81,5 +81,5 @@ func (a *Api) PostFeedInstanceAction(c echo.Context) error { } log.Debug("action begin accepted") - return c.JSON(http.StatusAccepted, api.ActionRequestAccepted{Uuid: uuid}) + return c.JSON(http.StatusAccepted, feeder.ActionRequestAccepted{Uuid: uuid}) } diff --git a/apifeederhandlers/post_feed_instance_resource_info.go b/feederhandlers/post_feed_instance_resource_info.go similarity index 94% rename from apifeederhandlers/post_feed_instance_resource_info.go rename to feederhandlers/post_feed_instance_resource_info.go index 35fddd5..45b879b 100644 --- a/apifeederhandlers/post_feed_instance_resource_info.go +++ b/feederhandlers/post_feed_instance_resource_info.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "encoding/json" @@ -7,14 +7,14 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) // PostFeedInstanceResourceInfo will populate FeedInstanceResourceInfo @@ // with posted instance resource information. The auth middleware has prepared nodeID and clusterID. func (a *Api) PostFeedInstanceResourceInfo(c echo.Context) error { - var data api.PostFeedInstanceResourceInfoJSONRequestBody + var data feeder.PostFeedInstanceResourceInfoJSONRequestBody keyH := cachekeys.FeedInstanceResourceInfoH keyQ := cachekeys.FeedInstanceResourceInfoQ keyPendingH := cachekeys.FeedInstanceResourceInfoPendingH diff --git a/apifeederhandlers/post_feed_instance_status.go b/feederhandlers/post_feed_instance_status.go similarity index 94% rename from apifeederhandlers/post_feed_instance_status.go rename to feederhandlers/post_feed_instance_status.go index e1e7228..e5eff04 100644 --- a/apifeederhandlers/post_feed_instance_status.go +++ b/feederhandlers/post_feed_instance_status.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "context" @@ -11,11 +11,11 @@ import ( "github.com/go-redis/redis/v8" "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) -func (a *Api) PostFeedInstanceStatus(c echo.Context, params api.PostFeedInstanceStatusParams) error { +func (a *Api) PostFeedInstanceStatus(c echo.Context, params feeder.PostFeedInstanceStatusParams) error { var ( keyH = cachekeys.FeedInstanceStatusH keyQ = cachekeys.FeedInstanceStatusQ @@ -42,7 +42,7 @@ func (a *Api) PostFeedInstanceStatus(c echo.Context, params api.PostFeedInstance return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload api.PostFeedInstanceStatusJSONRequestBody + var payload feeder.PostFeedInstanceStatusJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/apifeederhandlers/post_feed_node_disk.go b/feederhandlers/post_feed_node_disk.go similarity index 94% rename from apifeederhandlers/post_feed_node_disk.go rename to feederhandlers/post_feed_node_disk.go index 9f14d37..69476c3 100644 --- a/apifeederhandlers/post_feed_node_disk.go +++ b/feederhandlers/post_feed_node_disk.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "encoding/json" @@ -7,8 +7,8 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) // PostFeedNodeDisk will populate FeedNodeDiskH @@ @@ -31,7 +31,7 @@ func (a *Api) PostFeedNodeDisk(c echo.Context) error { if clusterID == "" { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload api.PostFeedNodeDiskJSONRequestBody + var payload feeder.PostFeedNodeDiskJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/apifeederhandlers/post_feed_object_config.go b/feederhandlers/post_feed_object_config.go similarity index 94% rename from apifeederhandlers/post_feed_object_config.go rename to feederhandlers/post_feed_object_config.go index de242b6..784d6c6 100644 --- a/apifeederhandlers/post_feed_object_config.go +++ b/feederhandlers/post_feed_object_config.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "encoding/json" @@ -7,8 +7,8 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) // PostFeedObjectConfig will populate FeedObjectConfigH @@ @@ -27,7 +27,7 @@ func (a *Api) PostFeedObjectConfig(c echo.Context) error { if clusterID == "" { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload api.PostFeedObjectConfigJSONRequestBody + var payload feeder.PostFeedObjectConfigJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/apifeederhandlers/post_feed_system.go b/feederhandlers/post_feed_system.go similarity index 97% rename from apifeederhandlers/post_feed_system.go rename to feederhandlers/post_feed_system.go index 398f2b6..420aa4b 100644 --- a/apifeederhandlers/post_feed_system.go +++ b/feederhandlers/post_feed_system.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "fmt" diff --git a/apifeederhandlers/problems.go b/feederhandlers/problems.go similarity index 84% rename from apifeederhandlers/problems.go rename to feederhandlers/problems.go index 4e32b5f..72f7af9 100644 --- a/apifeederhandlers/problems.go +++ b/feederhandlers/problems.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "fmt" @@ -6,7 +6,7 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" + "github.com/opensvc/oc3/feeder" ) func JSONProblemf(ctx echo.Context, code int, title, detail string, args ...any) error { @@ -17,7 +17,7 @@ func JSONProblem(ctx echo.Context, code int, title, detail string) error { if title == "" { title = http.StatusText(code) } - return ctx.JSON(code, api.Problem{ + return ctx.JSON(code, feeder.Problem{ Detail: detail, Title: title, Status: code, diff --git a/apifeederhandlers/put_feed_instance_action.go b/feederhandlers/put_feed_instance_action.go similarity index 94% rename from apifeederhandlers/put_feed_instance_action.go rename to feederhandlers/put_feed_instance_action.go index 2e5904f..7f91a13 100644 --- a/apifeederhandlers/put_feed_instance_action.go +++ b/feederhandlers/put_feed_instance_action.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "encoding/json" @@ -7,8 +7,8 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) /* @@ -44,7 +44,7 @@ func (a *Api) PutFeedInstanceActionEnd(c echo.Context) error { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload api.PutFeedInstanceActionEndJSONRequestBody + var payload feeder.PutFeedInstanceActionEndJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/apifeederhandlers/redis.go b/feederhandlers/redis.go similarity index 98% rename from apifeederhandlers/redis.go rename to feederhandlers/redis.go index 0fcbddd..b3d6fbd 100644 --- a/apifeederhandlers/redis.go +++ b/feederhandlers/redis.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "context" diff --git a/apifeederhandlers/redis_object_config_to_feed.go b/feederhandlers/redis_object_config_to_feed.go similarity index 96% rename from apifeederhandlers/redis_object_config_to_feed.go rename to feederhandlers/redis_object_config_to_feed.go index 3b3e973..d2e9711 100644 --- a/apifeederhandlers/redis_object_config_to_feed.go +++ b/feederhandlers/redis_object_config_to_feed.go @@ -1,4 +1,4 @@ -package apifeederhandlers +package feederhandlers import ( "context" diff --git a/comet.go b/messenger.go similarity index 85% rename from comet.go rename to messenger.go index 18d6257..7c0bfc7 100644 --- a/comet.go +++ b/messenger.go @@ -5,12 +5,11 @@ import ( "log/slog" "net/url" + "github.com/opensvc/oc3/messenger" "github.com/spf13/viper" - - "github.com/opensvc/oc3/comet" ) -func cometRun() error { +func startMessenger() error { if err := setup(); err != nil { return err } @@ -21,7 +20,7 @@ func cometRun() error { return err } - cometCmd := comet.CmdComet{ + cometCmd := messenger.CmdComet{ Address: u.Hostname(), Port: u.Port(), Key: viper.GetString("websocket.key"), diff --git a/comet/main.go b/messenger/main.go similarity index 99% rename from comet/main.go rename to messenger/main.go index e83325b..0fcec4e 100644 --- a/comet/main.go +++ b/messenger/main.go @@ -1,4 +1,4 @@ -package comet +package messenger import ( "crypto/hmac" diff --git a/actiond/main.go b/runner/main.go similarity index 99% rename from actiond/main.go rename to runner/main.go index ae5a980..17ca42b 100644 --- a/actiond/main.go +++ b/runner/main.go @@ -1,4 +1,4 @@ -package actiond +package runner import ( "bytes" diff --git a/scheduler.go b/scheduler.go index 5f218e6..989bc59 100644 --- a/scheduler.go +++ b/scheduler.go @@ -31,7 +31,7 @@ func scheduleList() error { return nil } -func schedule() error { +func startScheduler() error { if err := setup(); err != nil { return err } diff --git a/worker.go b/worker.go index 022b74b..503bfff 100644 --- a/worker.go +++ b/worker.go @@ -12,7 +12,7 @@ import ( "github.com/opensvc/oc3/worker" ) -func work(runners int, queues []string) error { +func startWorker(runners int, queues []string) error { db, err := newDatabase() if err != nil { return err diff --git a/worker/job_feed_daemon_ping.go b/worker/job_feed_daemon_ping.go index 63cfb23..26dcf7f 100644 --- a/worker/job_feed_daemon_ping.go +++ b/worker/job_feed_daemon_ping.go @@ -6,9 +6,9 @@ import ( "fmt" "log/slog" - "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" "github.com/opensvc/oc3/cdb" + "github.com/opensvc/oc3/feeder" ) type ( @@ -66,7 +66,7 @@ func (d *jobFeedDaemonPing) Operations() []operation { } func (d *jobFeedDaemonPing) getData(ctx context.Context) error { - var data apifeeder.PostFeedDaemonPing + var data feeder.PostFeedDaemonPing if b, err := d.redis.HGet(ctx, cachekeys.FeedDaemonPingH, d.nodeID).Bytes(); err != nil { return fmt.Errorf("getData: HGET %s %s: %w", cachekeys.FeedDaemonPingH, d.nodeID, err) } else if err = json.Unmarshal(b, &data); err != nil { diff --git a/worker/job_feed_instance_action.go b/worker/job_feed_instance_action.go index 3f39436..d64a095 100644 --- a/worker/job_feed_instance_action.go +++ b/worker/job_feed_instance_action.go @@ -10,9 +10,9 @@ import ( "github.com/google/uuid" - "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" "github.com/opensvc/oc3/cdb" + "github.com/opensvc/oc3/feeder" ) type jobFeedInstanceAction struct { @@ -31,7 +31,7 @@ type jobFeedInstanceAction struct { objectID string // data is the posted action begin payload - data *apifeeder.PostFeedInstanceActionJSONRequestBody + data *feeder.PostFeedInstanceActionJSONRequestBody rawData []byte } @@ -68,7 +68,7 @@ func (d *jobFeedInstanceAction) Operations() []operation { func (d *jobFeedInstanceAction) getData(ctx context.Context) error { var ( - data apifeeder.PostFeedInstanceActionJSONRequestBody + data feeder.PostFeedInstanceActionJSONRequestBody ) if b, err := d.redis.HGet(ctx, cachekeys.FeedInstanceActionH, d.idX).Bytes(); err != nil { return fmt.Errorf("getData: HGET %s %s: %w", cachekeys.FeedInstanceActionH, d.idX, err) diff --git a/worker/job_feed_instance_resource_info.go b/worker/job_feed_instance_resource_info.go index 43797ed..d7571af 100644 --- a/worker/job_feed_instance_resource_info.go +++ b/worker/job_feed_instance_resource_info.go @@ -8,8 +8,8 @@ import ( "github.com/go-redis/redis/v8" - "github.com/opensvc/oc3/apifeeder" "github.com/opensvc/oc3/cachekeys" + "github.com/opensvc/oc3/feeder" ) type ( @@ -33,7 +33,7 @@ type ( clusterID string // data is the posted instance resource info - data apifeeder.InstanceResourceInfo + data feeder.InstanceResourceInfo } ) From a9de1fcb35a07a025493c25bbc27495fa0cb2a71 Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Thu, 29 Jan 2026 10:44:20 +0100 Subject: [PATCH 2/5] Stop stuttering "feeder.*Feed.*" in api structs and func names --- feeder/api.yaml | 36 ++-- feeder/codegen_server_gen.go | 160 +++++++++--------- feeder/codegen_type_gen.go | 56 +++--- feederhandlers/post_feed_daemon_ping.go | 8 +- feederhandlers/post_feed_daemon_status.go | 10 +- feederhandlers/post_feed_instance_action.go | 6 +- .../post_feed_instance_resource_info.go | 6 +- feederhandlers/post_feed_instance_status.go | 4 +- feederhandlers/post_feed_node_disk.go | 6 +- feederhandlers/post_feed_object_config.go | 6 +- feederhandlers/post_feed_system.go | 2 +- feederhandlers/put_feed_instance_action.go | 6 +- worker/job_feed_daemon_ping.go | 2 +- worker/job_feed_instance_action.go | 4 +- 14 files changed, 156 insertions(+), 156 deletions(-) diff --git a/feeder/api.yaml b/feeder/api.yaml index e3a3a6b..ec27b97 100644 --- a/feeder/api.yaml +++ b/feeder/api.yaml @@ -12,16 +12,16 @@ paths: post: description: | Refresh cluster daemon status timestamps - operationId: PostFeedDaemonPing + operationId: PostDaemonPing requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/PostFeedDaemonPing' + $ref: '#/components/schemas/PostDaemonPing' responses: 202: - $ref: '#/components/responses/FeedDaemonPingAccepted' + $ref: '#/components/responses/DaemonPingAccepted' 204: description: missing daemon status for node, POST /daemon/status is required security: @@ -34,16 +34,16 @@ paths: post: description: | Refresh cluster daemon status - operationId: PostFeedDaemonStatus + operationId: PostDaemonStatus requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/PostFeedDaemonStatus' + $ref: '#/components/schemas/PostDaemonStatus' responses: 202: - $ref: '#/components/responses/FeedDaemonStatusAccepted' + $ref: '#/components/responses/DaemonStatusAccepted' 400: $ref: '#/components/responses/400' 401: @@ -81,7 +81,7 @@ paths: post: description: | Update or create node disks configuration - operationId: PostFeedNodeDisk + operationId: PostNodeDisk requestBody: required: true content: @@ -101,7 +101,7 @@ paths: post: description: | Post system discovery - operationId: PostFeedSystem + operationId: PostSystem requestBody: required: true content: @@ -129,7 +129,7 @@ paths: put: description: | End an action for a given object path - operationId: PutFeedInstanceActionEnd + operationId: PutInstanceActionEnd requestBody: required: true content: @@ -155,7 +155,7 @@ paths: post: description: | Begin an action for a given object path - operationId: PostFeedInstanceAction + operationId: PostInstanceAction requestBody: required: true content: @@ -187,7 +187,7 @@ paths: post: description: | Update or create instance resource info - operationId: PostFeedInstanceResourceInfo + operationId: PostInstanceResourceInfo requestBody: required: true content: @@ -207,7 +207,7 @@ paths: post: description: | Store opensvc 2.1 instance status data. - operationId: PostFeedInstanceStatus + operationId: PostInstanceStatus parameters: - $ref: '#/components/parameters/inQuerySync' requestBody: @@ -239,7 +239,7 @@ paths: post: description: | Update or create object configuration - operationId: PostFeedObjectConfig + operationId: PostObjectConfig requestBody: required: true content: @@ -448,7 +448,7 @@ components: type: string format: byte - PostFeedDaemonPing: + PostDaemonPing: type: object required: - nodes @@ -471,7 +471,7 @@ components: type: string description: the opensvc client data version - PostFeedDaemonStatus: + PostDaemonStatus: type: object required: - data @@ -640,7 +640,7 @@ components: schema: $ref: "#/components/schemas/Problem" - FeedDaemonPingAccepted: + DaemonPingAccepted: description: daemon status timestamps will be refreshed for node content: application/json: @@ -654,7 +654,7 @@ components: type: string description: object name - FeedDaemonStatusAccepted: + DaemonStatusAccepted: description: daemon status will be refreshed for node content: application/json: @@ -668,4 +668,4 @@ components: type: string description: object name - \ No newline at end of file + diff --git a/feeder/codegen_server_gen.go b/feeder/codegen_server_gen.go index f94a482..4cbc33a 100644 --- a/feeder/codegen_server_gen.go +++ b/feeder/codegen_server_gen.go @@ -22,34 +22,34 @@ import ( type ServerInterface interface { // (POST /daemon/ping) - PostFeedDaemonPing(ctx echo.Context) error + PostDaemonPing(ctx echo.Context) error // (POST /daemon/status) - PostFeedDaemonStatus(ctx echo.Context) error + PostDaemonStatus(ctx echo.Context) error // (GET /docs/openapi) GetSwagger(ctx echo.Context) error // (POST /instance/action) - PostFeedInstanceAction(ctx echo.Context) error + PostInstanceAction(ctx echo.Context) error // (PUT /instance/action) - PutFeedInstanceActionEnd(ctx echo.Context) error + PutInstanceActionEnd(ctx echo.Context) error // (POST /instance/resource_info) - PostFeedInstanceResourceInfo(ctx echo.Context) error + PostInstanceResourceInfo(ctx echo.Context) error // (POST /instance/status) - PostFeedInstanceStatus(ctx echo.Context, params PostFeedInstanceStatusParams) error + PostInstanceStatus(ctx echo.Context, params PostInstanceStatusParams) error // (POST /node/disk) - PostFeedNodeDisk(ctx echo.Context) error + PostNodeDisk(ctx echo.Context) error // (POST /node/system) - PostFeedSystem(ctx echo.Context) error + PostSystem(ctx echo.Context) error // (POST /object/config) - PostFeedObjectConfig(ctx echo.Context) error + PostObjectConfig(ctx echo.Context) error // (GET /version) GetVersion(ctx echo.Context) error @@ -60,8 +60,8 @@ type ServerInterfaceWrapper struct { Handler ServerInterface } -// PostFeedDaemonPing converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedDaemonPing(ctx echo.Context) error { +// PostDaemonPing converts echo context to params. +func (w *ServerInterfaceWrapper) PostDaemonPing(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -69,12 +69,12 @@ func (w *ServerInterfaceWrapper) PostFeedDaemonPing(ctx echo.Context) error { ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedDaemonPing(ctx) + err = w.Handler.PostDaemonPing(ctx) return err } -// PostFeedDaemonStatus converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedDaemonStatus(ctx echo.Context) error { +// PostDaemonStatus converts echo context to params. +func (w *ServerInterfaceWrapper) PostDaemonStatus(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -82,7 +82,7 @@ func (w *ServerInterfaceWrapper) PostFeedDaemonStatus(ctx echo.Context) error { ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedDaemonStatus(ctx) + err = w.Handler.PostDaemonStatus(ctx) return err } @@ -95,8 +95,8 @@ func (w *ServerInterfaceWrapper) GetSwagger(ctx echo.Context) error { return err } -// PostFeedInstanceAction converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedInstanceAction(ctx echo.Context) error { +// PostInstanceAction converts echo context to params. +func (w *ServerInterfaceWrapper) PostInstanceAction(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -104,12 +104,12 @@ func (w *ServerInterfaceWrapper) PostFeedInstanceAction(ctx echo.Context) error ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedInstanceAction(ctx) + err = w.Handler.PostInstanceAction(ctx) return err } -// PutFeedInstanceActionEnd converts echo context to params. -func (w *ServerInterfaceWrapper) PutFeedInstanceActionEnd(ctx echo.Context) error { +// PutInstanceActionEnd converts echo context to params. +func (w *ServerInterfaceWrapper) PutInstanceActionEnd(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -117,12 +117,12 @@ func (w *ServerInterfaceWrapper) PutFeedInstanceActionEnd(ctx echo.Context) erro ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PutFeedInstanceActionEnd(ctx) + err = w.Handler.PutInstanceActionEnd(ctx) return err } -// PostFeedInstanceResourceInfo converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedInstanceResourceInfo(ctx echo.Context) error { +// PostInstanceResourceInfo converts echo context to params. +func (w *ServerInterfaceWrapper) PostInstanceResourceInfo(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -130,12 +130,12 @@ func (w *ServerInterfaceWrapper) PostFeedInstanceResourceInfo(ctx echo.Context) ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedInstanceResourceInfo(ctx) + err = w.Handler.PostInstanceResourceInfo(ctx) return err } -// PostFeedInstanceStatus converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedInstanceStatus(ctx echo.Context) error { +// PostInstanceStatus converts echo context to params. +func (w *ServerInterfaceWrapper) PostInstanceStatus(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -143,7 +143,7 @@ func (w *ServerInterfaceWrapper) PostFeedInstanceStatus(ctx echo.Context) error ctx.Set(BearerAuthScopes, []string{}) // Parameter object where we will unmarshal all parameters from the context - var params PostFeedInstanceStatusParams + var params PostInstanceStatusParams // ------------- Optional query parameter "sync" ------------- err = runtime.BindQueryParameter("form", true, false, "sync", ctx.QueryParams(), ¶ms.Sync) @@ -152,12 +152,12 @@ func (w *ServerInterfaceWrapper) PostFeedInstanceStatus(ctx echo.Context) error } // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedInstanceStatus(ctx, params) + err = w.Handler.PostInstanceStatus(ctx, params) return err } -// PostFeedNodeDisk converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedNodeDisk(ctx echo.Context) error { +// PostNodeDisk converts echo context to params. +func (w *ServerInterfaceWrapper) PostNodeDisk(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -165,12 +165,12 @@ func (w *ServerInterfaceWrapper) PostFeedNodeDisk(ctx echo.Context) error { ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedNodeDisk(ctx) + err = w.Handler.PostNodeDisk(ctx) return err } -// PostFeedSystem converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedSystem(ctx echo.Context) error { +// PostSystem converts echo context to params. +func (w *ServerInterfaceWrapper) PostSystem(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -178,12 +178,12 @@ func (w *ServerInterfaceWrapper) PostFeedSystem(ctx echo.Context) error { ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedSystem(ctx) + err = w.Handler.PostSystem(ctx) return err } -// PostFeedObjectConfig converts echo context to params. -func (w *ServerInterfaceWrapper) PostFeedObjectConfig(ctx echo.Context) error { +// PostObjectConfig converts echo context to params. +func (w *ServerInterfaceWrapper) PostObjectConfig(ctx echo.Context) error { var err error ctx.Set(BasicAuthScopes, []string{}) @@ -191,7 +191,7 @@ func (w *ServerInterfaceWrapper) PostFeedObjectConfig(ctx echo.Context) error { ctx.Set(BearerAuthScopes, []string{}) // Invoke the callback with all the unmarshaled arguments - err = w.Handler.PostFeedObjectConfig(ctx) + err = w.Handler.PostObjectConfig(ctx) return err } @@ -232,16 +232,16 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL Handler: si, } - router.POST(baseURL+"/daemon/ping", wrapper.PostFeedDaemonPing) - router.POST(baseURL+"/daemon/status", wrapper.PostFeedDaemonStatus) + router.POST(baseURL+"/daemon/ping", wrapper.PostDaemonPing) + router.POST(baseURL+"/daemon/status", wrapper.PostDaemonStatus) router.GET(baseURL+"/docs/openapi", wrapper.GetSwagger) - router.POST(baseURL+"/instance/action", wrapper.PostFeedInstanceAction) - router.PUT(baseURL+"/instance/action", wrapper.PutFeedInstanceActionEnd) - router.POST(baseURL+"/instance/resource_info", wrapper.PostFeedInstanceResourceInfo) - router.POST(baseURL+"/instance/status", wrapper.PostFeedInstanceStatus) - router.POST(baseURL+"/node/disk", wrapper.PostFeedNodeDisk) - router.POST(baseURL+"/node/system", wrapper.PostFeedSystem) - router.POST(baseURL+"/object/config", wrapper.PostFeedObjectConfig) + router.POST(baseURL+"/instance/action", wrapper.PostInstanceAction) + router.PUT(baseURL+"/instance/action", wrapper.PutInstanceActionEnd) + router.POST(baseURL+"/instance/resource_info", wrapper.PostInstanceResourceInfo) + router.POST(baseURL+"/instance/status", wrapper.PostInstanceStatus) + router.POST(baseURL+"/node/disk", wrapper.PostNodeDisk) + router.POST(baseURL+"/node/system", wrapper.PostSystem) + router.POST(baseURL+"/object/config", wrapper.PostObjectConfig) router.GET(baseURL+"/version", wrapper.GetVersion) } @@ -249,40 +249,40 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/feeder/codegen_type_gen.go b/feeder/codegen_type_gen.go index 5d65ff6..46abf94 100644 --- a/feeder/codegen_type_gen.go +++ b/feeder/codegen_type_gen.go @@ -95,8 +95,8 @@ type ObjectConfig struct { Topology *string `json:"topology,omitempty"` } -// PostFeedDaemonPing defines model for PostFeedDaemonPing. -type PostFeedDaemonPing struct { +// PostDaemonPing defines model for PostDaemonPing. +type PostDaemonPing struct { // Nodes list of cluster node Nodes []string `json:"nodes"` @@ -107,8 +107,8 @@ type PostFeedDaemonPing struct { Version string `json:"version"` } -// PostFeedDaemonStatus defines model for PostFeedDaemonStatus. -type PostFeedDaemonStatus struct { +// PostDaemonStatus defines model for PostDaemonStatus. +type PostDaemonStatus struct { Changes []string `json:"changes"` Data map[string]interface{} `json:"data"` PreviousUpdatedAt *time.Time `json:"previous_updated_at,omitempty"` @@ -170,46 +170,46 @@ type N403 = Problem // N500 defines model for 500. type N500 = Problem -// FeedDaemonPingAccepted defines model for FeedDaemonPingAccepted. -type FeedDaemonPingAccepted struct { +// DaemonPingAccepted defines model for DaemonPingAccepted. +type DaemonPingAccepted struct { // ObjectWithoutConfig list of object names that requires POST /oc3/feed/api/object/config ObjectWithoutConfig *[]string `json:"object_without_config,omitempty"` } -// FeedDaemonStatusAccepted defines model for FeedDaemonStatusAccepted. -type FeedDaemonStatusAccepted struct { +// DaemonStatusAccepted defines model for DaemonStatusAccepted. +type DaemonStatusAccepted struct { // ObjectWithoutConfig list of object names that requires POST /oc3/feed/api/object/config ObjectWithoutConfig *[]string `json:"object_without_config,omitempty"` } -// PostFeedInstanceStatusParams defines parameters for PostFeedInstanceStatus. -type PostFeedInstanceStatusParams struct { +// PostInstanceStatusParams defines parameters for PostInstanceStatus. +type PostInstanceStatusParams struct { Sync *InQuerySync `form:"sync,omitempty" json:"sync,omitempty"` } -// PostFeedDaemonPingJSONRequestBody defines body for PostFeedDaemonPing for application/json ContentType. -type PostFeedDaemonPingJSONRequestBody = PostFeedDaemonPing +// PostDaemonPingJSONRequestBody defines body for PostDaemonPing for application/json ContentType. +type PostDaemonPingJSONRequestBody = PostDaemonPing -// PostFeedDaemonStatusJSONRequestBody defines body for PostFeedDaemonStatus for application/json ContentType. -type PostFeedDaemonStatusJSONRequestBody = PostFeedDaemonStatus +// PostDaemonStatusJSONRequestBody defines body for PostDaemonStatus for application/json ContentType. +type PostDaemonStatusJSONRequestBody = PostDaemonStatus -// PostFeedInstanceActionJSONRequestBody defines body for PostFeedInstanceAction for application/json ContentType. -type PostFeedInstanceActionJSONRequestBody = Action +// PostInstanceActionJSONRequestBody defines body for PostInstanceAction for application/json ContentType. +type PostInstanceActionJSONRequestBody = Action -// PutFeedInstanceActionEndJSONRequestBody defines body for PutFeedInstanceActionEnd for application/json ContentType. -type PutFeedInstanceActionEndJSONRequestBody = Action +// PutInstanceActionEndJSONRequestBody defines body for PutInstanceActionEnd for application/json ContentType. +type PutInstanceActionEndJSONRequestBody = Action -// PostFeedInstanceResourceInfoJSONRequestBody defines body for PostFeedInstanceResourceInfo for application/json ContentType. -type PostFeedInstanceResourceInfoJSONRequestBody = InstanceResourceInfo +// PostInstanceResourceInfoJSONRequestBody defines body for PostInstanceResourceInfo for application/json ContentType. +type PostInstanceResourceInfoJSONRequestBody = InstanceResourceInfo -// PostFeedInstanceStatusJSONRequestBody defines body for PostFeedInstanceStatus for application/json ContentType. -type PostFeedInstanceStatusJSONRequestBody = InstanceStatus +// PostInstanceStatusJSONRequestBody defines body for PostInstanceStatus for application/json ContentType. +type PostInstanceStatusJSONRequestBody = InstanceStatus -// PostFeedNodeDiskJSONRequestBody defines body for PostFeedNodeDisk for application/json ContentType. -type PostFeedNodeDiskJSONRequestBody = NodeDisks +// PostNodeDiskJSONRequestBody defines body for PostNodeDisk for application/json ContentType. +type PostNodeDiskJSONRequestBody = NodeDisks -// PostFeedSystemJSONRequestBody defines body for PostFeedSystem for application/json ContentType. -type PostFeedSystemJSONRequestBody = System +// PostSystemJSONRequestBody defines body for PostSystem for application/json ContentType. +type PostSystemJSONRequestBody = System -// PostFeedObjectConfigJSONRequestBody defines body for PostFeedObjectConfig for application/json ContentType. -type PostFeedObjectConfigJSONRequestBody = ObjectConfig +// PostObjectConfigJSONRequestBody defines body for PostObjectConfig for application/json ContentType. +type PostObjectConfigJSONRequestBody = ObjectConfig diff --git a/feederhandlers/post_feed_daemon_ping.go b/feederhandlers/post_feed_daemon_ping.go index 1e3e50b..f8f4ff8 100644 --- a/feederhandlers/post_feed_daemon_ping.go +++ b/feederhandlers/post_feed_daemon_ping.go @@ -11,8 +11,8 @@ import ( "github.com/opensvc/oc3/feeder" ) -func (a *Api) PostFeedDaemonPing(c echo.Context) error { - log := getLog(c).With("handler", "PostFeedDaemonPing") +func (a *Api) PostDaemonPing(c echo.Context) error { + log := getLog(c).With("handler", "PostDaemonPing") nodeID := nodeIDFromContext(c) if nodeID == "" { log.Debug("node auth problem") @@ -59,10 +59,10 @@ func (a *Api) PostFeedDaemonPing(c echo.Context) error { log.Error(fmt.Sprintf("%s", err)) } log.Info(fmt.Sprintf("accepted %s, cluster id %s need object config: %s", nodeID, clusterID, objects)) - return c.JSON(http.StatusAccepted, feeder.FeedDaemonPingAccepted{ObjectWithoutConfig: &objects}) + return c.JSON(http.StatusAccepted, feeder.DaemonPingAccepted{ObjectWithoutConfig: &objects}) } } } log.Info(fmt.Sprintf("accepted %s", nodeID)) - return c.JSON(http.StatusAccepted, feeder.FeedDaemonPingAccepted{}) + return c.JSON(http.StatusAccepted, feeder.DaemonPingAccepted{}) } diff --git a/feederhandlers/post_feed_daemon_status.go b/feederhandlers/post_feed_daemon_status.go index 660d2cb..7d5f377 100644 --- a/feederhandlers/post_feed_daemon_status.go +++ b/feederhandlers/post_feed_daemon_status.go @@ -14,8 +14,8 @@ import ( "github.com/opensvc/oc3/feeder" ) -func (a *Api) PostFeedDaemonStatus(c echo.Context) error { - log := getLog(c).With("handler", "PostFeedDaemonStatus") +func (a *Api) PostDaemonStatus(c echo.Context) error { + log := getLog(c).With("handler", "PostDaemonStatus") nodeID := nodeIDFromContext(c) if nodeID == "" { log.Debug("node auth problem") @@ -40,7 +40,7 @@ func (a *Api) PostFeedDaemonStatus(c echo.Context) error { if err != nil { return JSONProblemf(c, http.StatusInternalServerError, "", "read request body: %s", err) } - postData := &feeder.PostFeedDaemonStatus{} + postData := &feeder.PostDaemonStatus{} if err := json.Unmarshal(b, postData); err != nil { log.Error(fmt.Sprintf("Unmarshal %s", err)) return JSONProblemf(c, http.StatusBadRequest, "BadRequest", "unexpected body: %s", err) @@ -99,9 +99,9 @@ func (a *Api) PostFeedDaemonStatus(c echo.Context) error { log.Error(fmt.Sprintf("%s", err)) } log.Info(fmt.Sprintf("accepted %s, cluster id %s need object config: %s", nodeID, clusterID, objects)) - return c.JSON(http.StatusAccepted, feeder.FeedDaemonStatusAccepted{ObjectWithoutConfig: &objects}) + return c.JSON(http.StatusAccepted, feeder.DaemonStatusAccepted{ObjectWithoutConfig: &objects}) } } } - return c.JSON(http.StatusAccepted, feeder.FeedDaemonStatusAccepted{}) + return c.JSON(http.StatusAccepted, feeder.DaemonStatusAccepted{}) } diff --git a/feederhandlers/post_feed_instance_action.go b/feederhandlers/post_feed_instance_action.go index 7576edb..6af5701 100644 --- a/feederhandlers/post_feed_instance_action.go +++ b/feederhandlers/post_feed_instance_action.go @@ -29,8 +29,8 @@ import ( } */ -// PostFeedInstanceAction handles POST /action/begin -func (a *Api) PostFeedInstanceAction(c echo.Context) error { +// PostInstanceAction handles POST /action/begin +func (a *Api) PostInstanceAction(c echo.Context) error { keyH := cachekeys.FeedInstanceActionH keyQ := cachekeys.FeedInstanceActionQ keyPendingH := cachekeys.FeedInstanceActionPendingH @@ -48,7 +48,7 @@ func (a *Api) PostFeedInstanceAction(c echo.Context) error { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload feeder.PostFeedInstanceActionJSONRequestBody + var payload feeder.PostInstanceActionJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/feederhandlers/post_feed_instance_resource_info.go b/feederhandlers/post_feed_instance_resource_info.go index 45b879b..91d14fd 100644 --- a/feederhandlers/post_feed_instance_resource_info.go +++ b/feederhandlers/post_feed_instance_resource_info.go @@ -11,10 +11,10 @@ import ( "github.com/opensvc/oc3/feeder" ) -// PostFeedInstanceResourceInfo will populate FeedInstanceResourceInfo @@ +// PostInstanceResourceInfo will populate FeedInstanceResourceInfo @@ // with posted instance resource information. The auth middleware has prepared nodeID and clusterID. -func (a *Api) PostFeedInstanceResourceInfo(c echo.Context) error { - var data feeder.PostFeedInstanceResourceInfoJSONRequestBody +func (a *Api) PostInstanceResourceInfo(c echo.Context) error { + var data feeder.PostInstanceResourceInfoJSONRequestBody keyH := cachekeys.FeedInstanceResourceInfoH keyQ := cachekeys.FeedInstanceResourceInfoQ keyPendingH := cachekeys.FeedInstanceResourceInfoPendingH diff --git a/feederhandlers/post_feed_instance_status.go b/feederhandlers/post_feed_instance_status.go index e5eff04..ab6d5c5 100644 --- a/feederhandlers/post_feed_instance_status.go +++ b/feederhandlers/post_feed_instance_status.go @@ -15,7 +15,7 @@ import ( "github.com/opensvc/oc3/feeder" ) -func (a *Api) PostFeedInstanceStatus(c echo.Context, params feeder.PostFeedInstanceStatusParams) error { +func (a *Api) PostInstanceStatus(c echo.Context, params feeder.PostInstanceStatusParams) error { var ( keyH = cachekeys.FeedInstanceStatusH keyQ = cachekeys.FeedInstanceStatusQ @@ -42,7 +42,7 @@ func (a *Api) PostFeedInstanceStatus(c echo.Context, params feeder.PostFeedInsta return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload feeder.PostFeedInstanceStatusJSONRequestBody + var payload feeder.PostInstanceStatusJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/feederhandlers/post_feed_node_disk.go b/feederhandlers/post_feed_node_disk.go index 69476c3..be727c1 100644 --- a/feederhandlers/post_feed_node_disk.go +++ b/feederhandlers/post_feed_node_disk.go @@ -11,9 +11,9 @@ import ( "github.com/opensvc/oc3/feeder" ) -// PostFeedNodeDisk will populate FeedNodeDiskH @@ +// PostNodeDisk will populate FeedNodeDiskH @@ // with posted disk, auth middleware has prepared nodeID, clusterID, and nodename. -func (a *Api) PostFeedNodeDisk(c echo.Context) error { +func (a *Api) PostNodeDisk(c echo.Context) error { keyH := cachekeys.FeedNodeDiskH keyQ := cachekeys.FeedNodeDiskQ keyPendingH := cachekeys.FeedNodeDiskPendingH @@ -31,7 +31,7 @@ func (a *Api) PostFeedNodeDisk(c echo.Context) error { if clusterID == "" { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload feeder.PostFeedNodeDiskJSONRequestBody + var payload feeder.PostNodeDiskJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/feederhandlers/post_feed_object_config.go b/feederhandlers/post_feed_object_config.go index 784d6c6..5092522 100644 --- a/feederhandlers/post_feed_object_config.go +++ b/feederhandlers/post_feed_object_config.go @@ -11,9 +11,9 @@ import ( "github.com/opensvc/oc3/feeder" ) -// PostFeedObjectConfig will populate FeedObjectConfigH @@ +// PostObjectConfig will populate FeedObjectConfigH @@ // with posted object config. The auth middleware has prepared nodeID and clusterID. -func (a *Api) PostFeedObjectConfig(c echo.Context) error { +func (a *Api) PostObjectConfig(c echo.Context) error { keyH := cachekeys.FeedObjectConfigH keyQ := cachekeys.FeedObjectConfigQ keyPendingH := cachekeys.FeedObjectConfigPendingH @@ -27,7 +27,7 @@ func (a *Api) PostFeedObjectConfig(c echo.Context) error { if clusterID == "" { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload feeder.PostFeedObjectConfigJSONRequestBody + var payload feeder.PostObjectConfigJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/feederhandlers/post_feed_system.go b/feederhandlers/post_feed_system.go index 420aa4b..18a2bea 100644 --- a/feederhandlers/post_feed_system.go +++ b/feederhandlers/post_feed_system.go @@ -10,7 +10,7 @@ import ( "github.com/opensvc/oc3/cachekeys" ) -func (a *Api) PostFeedSystem(c echo.Context) error { +func (a *Api) PostSystem(c echo.Context) error { log := getLog(c) nodeID := nodeIDFromContext(c) if nodeID == "" { diff --git a/feederhandlers/put_feed_instance_action.go b/feederhandlers/put_feed_instance_action.go index 7f91a13..457a771 100644 --- a/feederhandlers/put_feed_instance_action.go +++ b/feederhandlers/put_feed_instance_action.go @@ -25,8 +25,8 @@ import ( } */ -// PutFeedInstanceActionEnd handles PUT /feed/action -func (a *Api) PutFeedInstanceActionEnd(c echo.Context) error { +// PutInstanceActionEnd handles PUT /feed/action +func (a *Api) PutInstanceActionEnd(c echo.Context) error { keyH := cachekeys.FeedInstanceActionH keyQ := cachekeys.FeedInstanceActionQ keyPendingH := cachekeys.FeedInstanceActionPendingH @@ -44,7 +44,7 @@ func (a *Api) PutFeedInstanceActionEnd(c echo.Context) error { return JSONProblemf(c, http.StatusConflict, "Refused", "authenticated node doesn't define cluster id") } - var payload feeder.PutFeedInstanceActionEndJSONRequestBody + var payload feeder.PutInstanceActionEndJSONRequestBody if err := c.Bind(&payload); err != nil { return JSONProblem(c, http.StatusBadRequest, "Failed to json decode request body", err.Error()) } diff --git a/worker/job_feed_daemon_ping.go b/worker/job_feed_daemon_ping.go index 26dcf7f..0747714 100644 --- a/worker/job_feed_daemon_ping.go +++ b/worker/job_feed_daemon_ping.go @@ -66,7 +66,7 @@ func (d *jobFeedDaemonPing) Operations() []operation { } func (d *jobFeedDaemonPing) getData(ctx context.Context) error { - var data feeder.PostFeedDaemonPing + var data feeder.PostDaemonPing if b, err := d.redis.HGet(ctx, cachekeys.FeedDaemonPingH, d.nodeID).Bytes(); err != nil { return fmt.Errorf("getData: HGET %s %s: %w", cachekeys.FeedDaemonPingH, d.nodeID, err) } else if err = json.Unmarshal(b, &data); err != nil { diff --git a/worker/job_feed_instance_action.go b/worker/job_feed_instance_action.go index d64a095..00a6c8d 100644 --- a/worker/job_feed_instance_action.go +++ b/worker/job_feed_instance_action.go @@ -31,7 +31,7 @@ type jobFeedInstanceAction struct { objectID string // data is the posted action begin payload - data *feeder.PostFeedInstanceActionJSONRequestBody + data *feeder.PostInstanceActionJSONRequestBody rawData []byte } @@ -68,7 +68,7 @@ func (d *jobFeedInstanceAction) Operations() []operation { func (d *jobFeedInstanceAction) getData(ctx context.Context) error { var ( - data feeder.PostFeedInstanceActionJSONRequestBody + data feeder.PostInstanceActionJSONRequestBody ) if b, err := d.redis.HGet(ctx, cachekeys.FeedInstanceActionH, d.idX).Bytes(); err != nil { return fmt.Errorf("getData: HGET %s %s: %w", cachekeys.FeedInstanceActionH, d.idX, err) From 9b6ede02c0154608a64247c2060d882bbb5a9ba3 Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Thu, 29 Jan 2026 10:52:38 +0100 Subject: [PATCH 3/5] Add the "subsystems" cobra command group Help now looks like: $ ./dist/oc3 Manage the opensvc collector infrastructure components. Usage: oc3 [command] Subsystems: apicollector serve the collector api feeder serve the data feed api to nodes messenger notify clients of data changes runner dispatch actions to nodes scheduler start running db maintenance tasks worker run queued jobs Additional Commands: completion Generate the autocompletion script for the specified shell help Help about any command version display the oc3 version Flags: --debug set log level to debug -h, --help help for oc3 Use "oc3 [command] --help" for more information about a command. --- cmd.go | 86 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/cmd.go b/cmd.go index b6f79b1..02d2001 100644 --- a/cmd.go +++ b/cmd.go @@ -13,13 +13,23 @@ import ( var ( debug bool + + GroupIDSubsystems = "subsystems" ) +func NewGroupSubsystems() *cobra.Group { + return &cobra.Group{ + ID: GroupIDSubsystems, + Title: "Subsystems:", + } +} + func cmdWorker() *cobra.Command { var maxRunners int cmd := &cobra.Command{ - Use: "worker", - Short: "run queued jobs", + GroupID: GroupIDSubsystems, + Use: "worker", + Short: "run queued jobs", RunE: func(cmd *cobra.Command, args []string) error { if err := setup(); err != nil { return err @@ -35,10 +45,11 @@ func cmdWorker() *cobra.Command { return cmd } -func cmdApiFeeder() *cobra.Command { +func cmdFeeder() *cobra.Command { return &cobra.Command{ - Use: "feeder", - Short: "serve the data feed api to nodes", + GroupID: GroupIDSubsystems, + Use: "feeder", + Short: "serve the data feed api to nodes", RunE: func(cmd *cobra.Command, args []string) error { if err := setup(); err != nil { return err @@ -50,8 +61,9 @@ func cmdApiFeeder() *cobra.Command { func cmdApiCollector() *cobra.Command { return &cobra.Command{ - Use: "apicollector", - Short: "serve the collector api", + GroupID: GroupIDSubsystems, + Use: "apicollector", + Short: "serve the collector api", RunE: func(cmd *cobra.Command, args []string) error { if err := setup(); err != nil { return err @@ -61,57 +73,60 @@ func cmdApiCollector() *cobra.Command { } } -func cmdSchedulerList() *cobra.Command { +func cmdScheduler() *cobra.Command { return &cobra.Command{ - Use: "list", - Short: "list the tasks", + GroupID: GroupIDSubsystems, + Use: "scheduler", + Short: "start running db maintenance tasks", RunE: func(cmd *cobra.Command, args []string) error { - return scheduleList() + return startScheduler() }, } } -func cmdSchedulerExec() *cobra.Command { - var name string - cmd := &cobra.Command{ - Use: "exec", - Short: "execute a task inline", +func cmdRunner() *cobra.Command { + return &cobra.Command{ + GroupID: GroupIDSubsystems, + Use: "runner", + Short: "dispatch actions to nodes", RunE: func(cmd *cobra.Command, args []string) error { - return scheduleExec(name) + return startRunner() }, } - cmd.Flags().StringVar(&name, "name", "", "the task name") - return cmd } -func cmdScheduler() *cobra.Command { +func cmdMessenger() *cobra.Command { return &cobra.Command{ - Use: "scheduler", - Short: "start running db maintenance tasks", + GroupID: GroupIDSubsystems, + Use: "messenger", + Short: "notify clients of data changes", RunE: func(cmd *cobra.Command, args []string) error { - return startScheduler() + return startMessenger() }, } } -func cmdActions() *cobra.Command { +func cmdSchedulerList() *cobra.Command { return &cobra.Command{ - Use: "runner", - Short: "dispatch actions to nodes", + Use: "list", + Short: "list the tasks", RunE: func(cmd *cobra.Command, args []string) error { - return startRunner() + return scheduleList() }, } } -func cmdComet() *cobra.Command { - return &cobra.Command{ - Use: "messenger", - Short: "notify clients of data changes", +func cmdSchedulerExec() *cobra.Command { + var name string + cmd := &cobra.Command{ + Use: "exec", + Short: "execute a task inline", RunE: func(cmd *cobra.Command, args []string) error { - return startMessenger() + return scheduleExec(name) }, } + cmd.Flags().StringVar(&name, "name", "", "the task name") + return cmd } func cmdVersion() *cobra.Command { @@ -131,6 +146,7 @@ func cmdRoot(args []string) *cobra.Command { Short: "Manage the opensvc collector infrastructure components.", SilenceUsage: true, } + cmd.AddGroup(NewGroupSubsystems()) cmd.PersistentFlags().BoolVar(&debug, "debug", false, "set log level to debug") grpScheduler := cmdScheduler() grpScheduler.AddCommand( @@ -138,13 +154,13 @@ func cmdRoot(args []string) *cobra.Command { cmdSchedulerList(), ) cmd.AddCommand( - cmdApiFeeder(), + cmdFeeder(), cmdApiCollector(), grpScheduler, cmdVersion(), cmdWorker(), - cmdActions(), - cmdComet(), + cmdRunner(), + cmdMessenger(), ) return cmd } From 99b6a728af3b02548e7c90fe5f8b37f06e8cda74 Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Thu, 29 Jan 2026 11:10:09 +0100 Subject: [PATCH 4/5] clean up the head directory --- api.go => cmd/api.go | 2 +- cmd.go => cmd/cmd.go | 4 ++-- conf.go => cmd/conf.go | 2 +- db.go => cmd/db.go | 2 +- feeder.go => cmd/feeder.go | 4 ++-- messenger.go => cmd/messenger.go | 2 +- pprof.go => cmd/pprof.go | 2 +- redis.go => cmd/redis.go | 2 +- actions.go => cmd/runner.go | 2 +- scheduler.go => cmd/scheduler.go | 2 +- worker.go => cmd/worker.go | 2 +- {feederhandlers => feeder/handlers}/get_openapi.go | 0 {feederhandlers => feeder/handlers}/get_version.go | 0 {feederhandlers => feeder/handlers}/log.go | 0 {feederhandlers => feeder/handlers}/main.go | 0 {feederhandlers => feeder/handlers}/middleware-ui.go | 0 {feederhandlers => feeder/handlers}/middleware.go | 0 .../handlers}/post_feed_daemon_ping.go | 0 .../handlers}/post_feed_daemon_status.go | 0 .../handlers}/post_feed_instance_action.go | 0 .../handlers}/post_feed_instance_resource_info.go | 0 .../handlers}/post_feed_instance_status.go | 0 .../handlers}/post_feed_node_disk.go | 0 .../handlers}/post_feed_object_config.go | 0 .../handlers}/post_feed_system.go | 0 {feederhandlers => feeder/handlers}/problems.go | 0 .../handlers}/put_feed_instance_action.go | 0 {feederhandlers => feeder/handlers}/redis.go | 0 .../handlers}/redis_object_config_to_feed.go | 0 main.go | 12 +++++++----- 30 files changed, 20 insertions(+), 18 deletions(-) rename api.go => cmd/api.go (99%) rename cmd.go => cmd/cmd.go (98%) rename conf.go => cmd/conf.go (99%) rename db.go => cmd/db.go (98%) rename feeder.go => cmd/feeder.go (96%) rename messenger.go => cmd/messenger.go (98%) rename pprof.go => cmd/pprof.go (98%) rename redis.go => cmd/redis.go (96%) rename actions.go => cmd/runner.go (95%) rename scheduler.go => cmd/scheduler.go (99%) rename worker.go => cmd/worker.go (98%) rename {feederhandlers => feeder/handlers}/get_openapi.go (100%) rename {feederhandlers => feeder/handlers}/get_version.go (100%) rename {feederhandlers => feeder/handlers}/log.go (100%) rename {feederhandlers => feeder/handlers}/main.go (100%) rename {feederhandlers => feeder/handlers}/middleware-ui.go (100%) rename {feederhandlers => feeder/handlers}/middleware.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_daemon_ping.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_daemon_status.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_instance_action.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_instance_resource_info.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_instance_status.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_node_disk.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_object_config.go (100%) rename {feederhandlers => feeder/handlers}/post_feed_system.go (100%) rename {feederhandlers => feeder/handlers}/problems.go (100%) rename {feederhandlers => feeder/handlers}/put_feed_instance_action.go (100%) rename {feederhandlers => feeder/handlers}/redis.go (100%) rename {feederhandlers => feeder/handlers}/redis_object_config_to_feed.go (100%) diff --git a/api.go b/cmd/api.go similarity index 99% rename from api.go rename to cmd/api.go index 45308b6..5fde344 100644 --- a/api.go +++ b/cmd/api.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "context" diff --git a/cmd.go b/cmd/cmd.go similarity index 98% rename from cmd.go rename to cmd/cmd.go index 02d2001..e3933df 100644 --- a/cmd.go +++ b/cmd/cmd.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" @@ -140,7 +140,7 @@ func cmdVersion() *cobra.Command { return cmd } -func cmdRoot(args []string) *cobra.Command { +func Root(args []string) *cobra.Command { cmd := &cobra.Command{ Use: filepath.Base(args[0]), Short: "Manage the opensvc collector infrastructure components.", diff --git a/conf.go b/cmd/conf.go similarity index 99% rename from conf.go rename to cmd/conf.go index 9cf19cd..95620f4 100644 --- a/conf.go +++ b/cmd/conf.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/db.go b/cmd/db.go similarity index 98% rename from db.go rename to cmd/db.go index f70ca62..b58105a 100644 --- a/db.go +++ b/cmd/db.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "database/sql" diff --git a/feeder.go b/cmd/feeder.go similarity index 96% rename from feeder.go rename to cmd/feeder.go index 26d45c0..e125ae4 100644 --- a/feeder.go +++ b/cmd/feeder.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "context" @@ -11,7 +11,7 @@ import ( "github.com/spf13/viper" "github.com/opensvc/oc3/feeder" - "github.com/opensvc/oc3/feederhandlers" + feederhandlers "github.com/opensvc/oc3/feeder/handlers" "github.com/opensvc/oc3/xauth" ) diff --git a/messenger.go b/cmd/messenger.go similarity index 98% rename from messenger.go rename to cmd/messenger.go index 7c0bfc7..52e67c7 100644 --- a/messenger.go +++ b/cmd/messenger.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/pprof.go b/cmd/pprof.go similarity index 98% rename from pprof.go rename to cmd/pprof.go index c2a2e29..dba90ad 100644 --- a/pprof.go +++ b/cmd/pprof.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/redis.go b/cmd/redis.go similarity index 96% rename from redis.go rename to cmd/redis.go index 7384e48..bdd9831 100644 --- a/redis.go +++ b/cmd/redis.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/actions.go b/cmd/runner.go similarity index 95% rename from actions.go rename to cmd/runner.go index e6ffc66..bed76bd 100644 --- a/actions.go +++ b/cmd/runner.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "context" diff --git a/scheduler.go b/cmd/scheduler.go similarity index 99% rename from scheduler.go rename to cmd/scheduler.go index 989bc59..4c4e055 100644 --- a/scheduler.go +++ b/cmd/scheduler.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "context" diff --git a/worker.go b/cmd/worker.go similarity index 98% rename from worker.go rename to cmd/worker.go index 503bfff..173c0e9 100644 --- a/worker.go +++ b/cmd/worker.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/feederhandlers/get_openapi.go b/feeder/handlers/get_openapi.go similarity index 100% rename from feederhandlers/get_openapi.go rename to feeder/handlers/get_openapi.go diff --git a/feederhandlers/get_version.go b/feeder/handlers/get_version.go similarity index 100% rename from feederhandlers/get_version.go rename to feeder/handlers/get_version.go diff --git a/feederhandlers/log.go b/feeder/handlers/log.go similarity index 100% rename from feederhandlers/log.go rename to feeder/handlers/log.go diff --git a/feederhandlers/main.go b/feeder/handlers/main.go similarity index 100% rename from feederhandlers/main.go rename to feeder/handlers/main.go diff --git a/feederhandlers/middleware-ui.go b/feeder/handlers/middleware-ui.go similarity index 100% rename from feederhandlers/middleware-ui.go rename to feeder/handlers/middleware-ui.go diff --git a/feederhandlers/middleware.go b/feeder/handlers/middleware.go similarity index 100% rename from feederhandlers/middleware.go rename to feeder/handlers/middleware.go diff --git a/feederhandlers/post_feed_daemon_ping.go b/feeder/handlers/post_feed_daemon_ping.go similarity index 100% rename from feederhandlers/post_feed_daemon_ping.go rename to feeder/handlers/post_feed_daemon_ping.go diff --git a/feederhandlers/post_feed_daemon_status.go b/feeder/handlers/post_feed_daemon_status.go similarity index 100% rename from feederhandlers/post_feed_daemon_status.go rename to feeder/handlers/post_feed_daemon_status.go diff --git a/feederhandlers/post_feed_instance_action.go b/feeder/handlers/post_feed_instance_action.go similarity index 100% rename from feederhandlers/post_feed_instance_action.go rename to feeder/handlers/post_feed_instance_action.go diff --git a/feederhandlers/post_feed_instance_resource_info.go b/feeder/handlers/post_feed_instance_resource_info.go similarity index 100% rename from feederhandlers/post_feed_instance_resource_info.go rename to feeder/handlers/post_feed_instance_resource_info.go diff --git a/feederhandlers/post_feed_instance_status.go b/feeder/handlers/post_feed_instance_status.go similarity index 100% rename from feederhandlers/post_feed_instance_status.go rename to feeder/handlers/post_feed_instance_status.go diff --git a/feederhandlers/post_feed_node_disk.go b/feeder/handlers/post_feed_node_disk.go similarity index 100% rename from feederhandlers/post_feed_node_disk.go rename to feeder/handlers/post_feed_node_disk.go diff --git a/feederhandlers/post_feed_object_config.go b/feeder/handlers/post_feed_object_config.go similarity index 100% rename from feederhandlers/post_feed_object_config.go rename to feeder/handlers/post_feed_object_config.go diff --git a/feederhandlers/post_feed_system.go b/feeder/handlers/post_feed_system.go similarity index 100% rename from feederhandlers/post_feed_system.go rename to feeder/handlers/post_feed_system.go diff --git a/feederhandlers/problems.go b/feeder/handlers/problems.go similarity index 100% rename from feederhandlers/problems.go rename to feeder/handlers/problems.go diff --git a/feederhandlers/put_feed_instance_action.go b/feeder/handlers/put_feed_instance_action.go similarity index 100% rename from feederhandlers/put_feed_instance_action.go rename to feeder/handlers/put_feed_instance_action.go diff --git a/feederhandlers/redis.go b/feeder/handlers/redis.go similarity index 100% rename from feederhandlers/redis.go rename to feeder/handlers/redis.go diff --git a/feederhandlers/redis_object_config_to_feed.go b/feeder/handlers/redis_object_config_to_feed.go similarity index 100% rename from feederhandlers/redis_object_config_to_feed.go rename to feeder/handlers/redis_object_config_to_feed.go diff --git a/main.go b/main.go index da79882..24214ed 100644 --- a/main.go +++ b/main.go @@ -2,18 +2,20 @@ package main import ( "os" + + "github.com/opensvc/oc3/cmd" ) -// cmd parses the command line and run the selected component. -func cmd(args []string) error { - cmd := cmdRoot(args) - return cmd.Execute() +// execute parses the command line and run the selected component. +func execute(args []string) error { + root := cmd.Root(args) + return root.Execute() } // main is the program entrypoint. It's the only function using os.Exit, so // keep it simple. func main() { - if err := cmd(os.Args); err != nil { + if err := execute(os.Args); err != nil { os.Exit(1) } } From 32ee213cd73eb526ce46c0473add638f02b12877 Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Thu, 29 Jan 2026 11:51:58 +0100 Subject: [PATCH 5/5] Rename api to server Align config head sections names with subsystem names. Adapt your config to follow this breaking change. --- Makefile | 2 +- apihandlers/log.go | 13 ------- cmd/cmd.go | 6 ++-- cmd/conf.go | 34 +++++++++---------- cmd/feeder.go | 14 ++++---- cmd/messenger.go | 12 +++---- cmd/{api.go => server.go} | 30 ++++++++-------- feeder/handlers/get_openapi.go | 2 +- feeder/handlers/get_version.go | 4 +-- {api => server}/api.yaml | 0 {api => server}/codegen_server.yaml | 2 +- {api => server}/codegen_server_gen.go | 4 +-- {api => server}/codegen_type.yaml | 2 +- {api => server}/codegen_type_gen.go | 4 +-- .../handlers}/get_openapi.go | 4 +-- .../handlers}/get_version.go | 4 +-- server/handlers/log.go | 13 +++++++ {apihandlers => server/handlers}/main.go | 7 ++-- .../handlers}/middleware-ui.go | 2 +- .../handlers}/middleware.go | 2 +- {apihandlers => server/handlers}/problems.go | 6 ++-- {api => server}/main.go | 2 +- 22 files changed, 84 insertions(+), 85 deletions(-) delete mode 100644 apihandlers/log.go rename cmd/{api.go => server.go} (63%) rename {api => server}/api.yaml (100%) rename {api => server}/codegen_server.yaml (85%) rename {api => server}/codegen_server_gen.go (98%) rename {api => server}/codegen_type.yaml (76%) rename {api => server}/codegen_type_gen.go (91%) rename {apihandlers => server/handlers}/get_openapi.go (72%) rename {apihandlers => server/handlers}/get_version.go (86%) create mode 100644 server/handlers/log.go rename {apihandlers => server/handlers}/main.go (75%) rename {apihandlers => server/handlers}/middleware-ui.go (95%) rename {apihandlers => server/handlers}/middleware.go (98%) rename {apihandlers => server/handlers}/problems.go (85%) rename {api => server}/main.go (90%) diff --git a/Makefile b/Makefile index 9ff2ccd..23a20ba 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ deps: api: $(GOGEN) ./feeder - $(GOGEN) ./api + $(GOGEN) ./server clean: $(GOCLEAN) diff --git a/apihandlers/log.go b/apihandlers/log.go deleted file mode 100644 index 3e26869..0000000 --- a/apihandlers/log.go +++ /dev/null @@ -1,13 +0,0 @@ -package apihandlers - -import ( - "log/slog" -) - -func log(args ...any) { - slog.Info("apicollector", args...) -} - -func logErr(args ...any) { - slog.Error("apicollector", args...) -} diff --git a/cmd/cmd.go b/cmd/cmd.go index e3933df..07bbfb3 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -62,13 +62,13 @@ func cmdFeeder() *cobra.Command { func cmdApiCollector() *cobra.Command { return &cobra.Command{ GroupID: GroupIDSubsystems, - Use: "apicollector", - Short: "serve the collector api", + Use: "server", + Short: "serve the collector api to clients", RunE: func(cmd *cobra.Command, args []string) error { if err := setup(); err != nil { return err } - return startApi() + return startServer() }, } } diff --git a/cmd/conf.go b/cmd/conf.go index 95620f4..b3bb0d4 100644 --- a/cmd/conf.go +++ b/cmd/conf.go @@ -29,16 +29,16 @@ func initConfig() error { viper.AutomaticEnv() // defaults - viper.SetDefault("listener_feed.addr", "127.0.0.1:8080") - viper.SetDefault("listener_feed.pprof.enable", false) - viper.SetDefault("listener_feed.metrics.enable", false) - viper.SetDefault("listener_feed.ui.enable", false) - viper.SetDefault("listener_feed.sync.timeout", "2s") - viper.SetDefault("listener_api.addr", "127.0.0.1:8081") - viper.SetDefault("listener_api.pprof.enable", false) - viper.SetDefault("listener_api.metrics.enable", false) - viper.SetDefault("listener_api.ui.enable", false) - viper.SetDefault("listener_api.sync.timeout", "2s") + viper.SetDefault("feeder.addr", "127.0.0.1:8080") + viper.SetDefault("feeder.pprof.enable", false) + viper.SetDefault("feeder.metrics.enable", false) + viper.SetDefault("feeder.ui.enable", false) + viper.SetDefault("feeder.sync.timeout", "2s") + viper.SetDefault("server.addr", "127.0.0.1:8081") + viper.SetDefault("server.pprof.enable", false) + viper.SetDefault("server.metrics.enable", false) + viper.SetDefault("server.ui.enable", false) + viper.SetDefault("server.sync.timeout", "2s") viper.SetDefault("db.username", "opensvc") viper.SetDefault("db.host", "127.0.0.1") viper.SetDefault("db.port", "3306") @@ -48,11 +48,11 @@ func initConfig() error { viper.SetDefault("redis.address", "localhost:6379") viper.SetDefault("redis.password", "") viper.SetDefault("feeder.tx", true) - viper.SetDefault("websocket.key", "magix123") - viper.SetDefault("websocket.url", "http://127.0.0.1:8889") - viper.SetDefault("websocket.require_token", false) - viper.SetDefault("websocket.key_file", "") - viper.SetDefault("websocket.cert_file", "") + viper.SetDefault("messenger.key", "magix123") + viper.SetDefault("messenger.url", "http://127.0.0.1:8889") + viper.SetDefault("messenger.require_token", false) + viper.SetDefault("messenger.key_file", "") + viper.SetDefault("messenger.cert_file", "") viper.SetDefault("worker.runners", 1) viper.SetDefault("worker.pprof.uxsocket", "/var/run/oc3_worker_pprof.sock") //viper.SetDefault("worker.pprof.addr", "127.0.0.1:9999") @@ -85,7 +85,7 @@ func initConfig() error { func newEv() *oc2websocket.T { return &oc2websocket.T{ - Url: viper.GetString("websocket.url"), - Key: []byte(viper.GetString("websocket.key")), + Url: viper.GetString("messenger.url"), + Key: []byte(viper.GetString("messenger.key")), } } diff --git a/cmd/feeder.go b/cmd/feeder.go index e125ae4..9215b47 100644 --- a/cmd/feeder.go +++ b/cmd/feeder.go @@ -16,12 +16,12 @@ import ( ) func startFeeder() error { - addr := viper.GetString("listener_feed.addr") + addr := viper.GetString("feeder.addr") return listenAndServeFeeder(addr) } func listenAndServeFeeder(addr string) error { - enableUI := viper.GetBool("listener_feed.ui.enable") + enableUI := viper.GetBool("feeder.ui.enable") db, err := newDatabase() if err != nil { @@ -34,7 +34,7 @@ func listenAndServeFeeder(addr string) error { e.HideBanner = true e.HidePort = true - if viper.GetBool("listener_feed.pprof.enable") { + if viper.GetBool("feeder.pprof.enable") { slog.Info("add handler /oc3/feed/api/public/pprof") // TODO: move to authenticated path pprof.Register(e, "/oc3/feed/api/public/pprof") @@ -44,7 +44,7 @@ func listenAndServeFeeder(addr string) error { xauth.NewPublicStrategy("/oc3/feed/api/public/", "/oc3/feed/api/docs", "/oc3/feed/api/version"), xauth.NewBasicNode(db), ) - if viper.GetBool("listener_feed.metrics.enable") { + if viper.GetBool("feeder.metrics.enable") { slog.Info("add handler /oc3/feed/api/public/metrics") e.Use(echoprometheus.NewMiddleware("oc3_feeder")) e.GET("/oc3/feed/api/public/metrics", echoprometheus.NewHandler()) @@ -55,16 +55,16 @@ func listenAndServeFeeder(addr string) error { DB: db, Redis: redisClient, UI: enableUI, - SyncTimeout: viper.GetDuration("listener_feed.sync.timeout"), + SyncTimeout: viper.GetDuration("feeder.sync.timeout"), }, "/oc3/feed/api") if enableUI { - registerAPIUI(e) + registerFeederUI(e) } slog.Info("listen on " + addr) return e.Start(addr) } -func registerAPIUI(e *echo.Echo) { +func registerFeederUI(e *echo.Echo) { slog.Info("add handler /oc3/feed/api/docs/") g := e.Group("/oc3/feed/api/docs") g.Use(feederhandlers.UIMiddleware(context.Background())) diff --git a/cmd/messenger.go b/cmd/messenger.go index 52e67c7..048ab90 100644 --- a/cmd/messenger.go +++ b/cmd/messenger.go @@ -14,19 +14,19 @@ func startMessenger() error { return err } - u, err := url.Parse(viper.GetString("websocket.url")) + u, err := url.Parse(viper.GetString("messenger.url")) if err != nil { - slog.Warn(fmt.Sprintf("parsing websocket.url: %v", err)) + slog.Warn(fmt.Sprintf("parsing messenger.url: %v", err)) return err } cometCmd := messenger.CmdComet{ Address: u.Hostname(), Port: u.Port(), - Key: viper.GetString("websocket.key"), - RequireToken: viper.GetBool("websocket.require_token"), - CertFile: viper.GetString("websocket.cert_file"), - KeyFile: viper.GetString("websocket.key_file"), + Key: viper.GetString("messenger.key"), + RequireToken: viper.GetBool("messenger.require_token"), + CertFile: viper.GetString("messenger.cert_file"), + KeyFile: viper.GetString("messenger.key_file"), } return cometCmd.Run() diff --git a/cmd/api.go b/cmd/server.go similarity index 63% rename from cmd/api.go rename to cmd/server.go index 5fde344..b229edc 100644 --- a/cmd/api.go +++ b/cmd/server.go @@ -10,18 +10,18 @@ import ( "github.com/shaj13/go-guardian/v2/auth/strategies/union" "github.com/spf13/viper" - "github.com/opensvc/oc3/api" - "github.com/opensvc/oc3/apihandlers" + "github.com/opensvc/oc3/server" + serverhandlers "github.com/opensvc/oc3/server/handlers" "github.com/opensvc/oc3/xauth" ) -func startApi() error { - addr := viper.GetString("listener_api.addr") - return listenAndServeApi(addr) +func startServer() error { + addr := viper.GetString("server.addr") + return listenAndServeServer(addr) } -func listenAndServeApi(addr string) error { - enableUI := viper.GetBool("listener_api.ui.enable") +func listenAndServeServer(addr string) error { + enableUI := viper.GetBool("server.ui.enable") db, err := newDatabase() if err != nil { @@ -34,7 +34,7 @@ func listenAndServeApi(addr string) error { e.HideBanner = true e.HidePort = true - if viper.GetBool("listener_api.pprof.enable") { + if viper.GetBool("server.pprof.enable") { slog.Info("add handler /oc3/api/public/pprof") pprof.Register(e, "/oc3/api/public/pprof") } @@ -43,28 +43,28 @@ func listenAndServeApi(addr string) error { xauth.NewPublicStrategy("/oc3/api/public/", "/oc3/api/docs", "/oc3/api/version", "/oc3/api/openapi"), xauth.NewBasicNode(db), ) - if viper.GetBool("listener_api.metrics.enable") { + if viper.GetBool("server.metrics.enable") { slog.Info("add handler /oc3/api/public/metrics") e.Use(echoprometheus.NewMiddleware("oc3_api")) e.GET("/oc3/api/public/metrics", echoprometheus.NewHandler()) } - e.Use(apihandlers.AuthMiddleware(strategy)) + e.Use(serverhandlers.AuthMiddleware(strategy)) slog.Info("register openapi handlers with base url: /oc3/api") - api.RegisterHandlersWithBaseURL(e, &apihandlers.Api{ + server.RegisterHandlersWithBaseURL(e, &serverhandlers.Api{ DB: db, Redis: redisClient, UI: enableUI, - SyncTimeout: viper.GetDuration("listener_api.sync.timeout"), + SyncTimeout: viper.GetDuration("server.sync.timeout"), }, "/oc3/api") if enableUI { - registerApiCollectorUI(e) + registerServerUI(e) } slog.Info("listen on " + addr) return e.Start(addr) } -func registerApiCollectorUI(e *echo.Echo) { +func registerServerUI(e *echo.Echo) { slog.Info("add handler /oc3/api/docs/") g := e.Group("/oc3/api/docs") - g.Use(apihandlers.UIMiddleware(context.Background())) + g.Use(serverhandlers.UIMiddleware(context.Background())) } diff --git a/feeder/handlers/get_openapi.go b/feeder/handlers/get_openapi.go index d214ce3..267a30f 100644 --- a/feeder/handlers/get_openapi.go +++ b/feeder/handlers/get_openapi.go @@ -8,7 +8,7 @@ import ( func (a *Api) GetSwagger(ctx echo.Context) error { if !a.UI { - return JSONProblem(ctx, http.StatusUnauthorized, "serve schema is disabled by configuration.", "listener_feed.ui.enable = false") + return JSONProblem(ctx, http.StatusUnauthorized, "serve schema is disabled by configuration.", "feeder.ui.enable = false") } return ctx.JSON(http.StatusOK, SCHEMA) } diff --git a/feeder/handlers/get_version.go b/feeder/handlers/get_version.go index 6b2d9a2..1c2f9c2 100644 --- a/feeder/handlers/get_version.go +++ b/feeder/handlers/get_version.go @@ -5,12 +5,12 @@ import ( "github.com/labstack/echo/v4" - api "github.com/opensvc/oc3/feeder" + "github.com/opensvc/oc3/feeder" ) func (a *Api) GetVersion(c echo.Context) error { if SCHEMA.Info == nil { return JSONProblem(c, http.StatusInternalServerError, "invalid api schema", "missing schema info") } - return c.JSON(http.StatusOK, api.Version{Version: SCHEMA.Info.Version}) + return c.JSON(http.StatusOK, feeder.Version{Version: SCHEMA.Info.Version}) } diff --git a/api/api.yaml b/server/api.yaml similarity index 100% rename from api/api.yaml rename to server/api.yaml diff --git a/api/codegen_server.yaml b/server/codegen_server.yaml similarity index 85% rename from api/codegen_server.yaml rename to server/codegen_server.yaml index 50cd686..cce6a01 100644 --- a/api/codegen_server.yaml +++ b/server/codegen_server.yaml @@ -1,4 +1,4 @@ -package: api +package: server generate: echo-server: true models: false diff --git a/api/codegen_server_gen.go b/server/codegen_server_gen.go similarity index 98% rename from api/codegen_server_gen.go rename to server/codegen_server_gen.go index e920b11..564f890 100644 --- a/api/codegen_server_gen.go +++ b/server/codegen_server_gen.go @@ -1,7 +1,7 @@ -// Package api provides primitives to interact with the openapi HTTP API. +// Package server provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT. -package api +package server import ( "bytes" diff --git a/api/codegen_type.yaml b/server/codegen_type.yaml similarity index 76% rename from api/codegen_type.yaml rename to server/codegen_type.yaml index 2d73f49..975a110 100644 --- a/api/codegen_type.yaml +++ b/server/codegen_type.yaml @@ -1,4 +1,4 @@ -package: api +package: server generate: models: true output: codegen_type_gen.go diff --git a/api/codegen_type_gen.go b/server/codegen_type_gen.go similarity index 91% rename from api/codegen_type_gen.go rename to server/codegen_type_gen.go index 77e1bb1..dc6f0a0 100644 --- a/api/codegen_type_gen.go +++ b/server/codegen_type_gen.go @@ -1,7 +1,7 @@ -// Package api provides primitives to interact with the openapi HTTP API. +// Package server provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT. -package api +package server // Problem defines model for Problem. type Problem struct { diff --git a/apihandlers/get_openapi.go b/server/handlers/get_openapi.go similarity index 72% rename from apihandlers/get_openapi.go rename to server/handlers/get_openapi.go index d76c9bf..773f128 100644 --- a/apihandlers/get_openapi.go +++ b/server/handlers/get_openapi.go @@ -1,4 +1,4 @@ -package apihandlers +package serverhandlers import ( "net/http" @@ -8,7 +8,7 @@ import ( func (a *Api) GetSwagger(ctx echo.Context) error { if !a.UI { - return JSONProblem(ctx, http.StatusUnauthorized, "serve schema is disabled by configuration.", "listener_api.ui.enable = false") + return JSONProblem(ctx, http.StatusUnauthorized, "serve schema is disabled by configuration.", "server.ui.enable = false") } return ctx.JSON(http.StatusOK, SCHEMA) } diff --git a/apihandlers/get_version.go b/server/handlers/get_version.go similarity index 86% rename from apihandlers/get_version.go rename to server/handlers/get_version.go index 88570b4..2b1b0b8 100644 --- a/apihandlers/get_version.go +++ b/server/handlers/get_version.go @@ -1,4 +1,4 @@ -package apihandlers +package serverhandlers import ( "net/http" @@ -12,6 +12,6 @@ func (a *Api) GetVersion(c echo.Context) error { } return c.JSON(http.StatusOK, map[string]string{ "version": SCHEMA.Info.Version, - "service": "apicollector", + "service": "server", }) } diff --git a/server/handlers/log.go b/server/handlers/log.go new file mode 100644 index 0000000..35442a4 --- /dev/null +++ b/server/handlers/log.go @@ -0,0 +1,13 @@ +package serverhandlers + +import ( + "log/slog" +) + +func log(args ...any) { + slog.Info("server", args...) +} + +func logErr(args ...any) { + slog.Error("server", args...) +} diff --git a/apihandlers/main.go b/server/handlers/main.go similarity index 75% rename from apihandlers/main.go rename to server/handlers/main.go index 91bb817..c85abf4 100644 --- a/apihandlers/main.go +++ b/server/handlers/main.go @@ -1,4 +1,4 @@ -package apihandlers +package serverhandlers import ( "database/sql" @@ -6,8 +6,7 @@ import ( "github.com/getkin/kin-openapi/openapi3" "github.com/go-redis/redis/v8" - - "github.com/opensvc/oc3/api" + "github.com/opensvc/oc3/server" ) type ( @@ -26,7 +25,7 @@ var ( ) func init() { - if schema, err := api.GetSwagger(); err == nil { + if schema, err := server.GetSwagger(); err == nil { SCHEMA = *schema } } diff --git a/apihandlers/middleware-ui.go b/server/handlers/middleware-ui.go similarity index 95% rename from apihandlers/middleware-ui.go rename to server/handlers/middleware-ui.go index d32366d..d3d923b 100644 --- a/apihandlers/middleware-ui.go +++ b/server/handlers/middleware-ui.go @@ -1,4 +1,4 @@ -package apihandlers +package serverhandlers import ( "context" diff --git a/apihandlers/middleware.go b/server/handlers/middleware.go similarity index 98% rename from apihandlers/middleware.go rename to server/handlers/middleware.go index 88ab1a2..14fe638 100644 --- a/apihandlers/middleware.go +++ b/server/handlers/middleware.go @@ -1,4 +1,4 @@ -package apihandlers +package serverhandlers import ( "net/http" diff --git a/apihandlers/problems.go b/server/handlers/problems.go similarity index 85% rename from apihandlers/problems.go rename to server/handlers/problems.go index a30e4b2..e120615 100644 --- a/apihandlers/problems.go +++ b/server/handlers/problems.go @@ -1,4 +1,4 @@ -package apihandlers +package serverhandlers import ( "fmt" @@ -6,7 +6,7 @@ import ( "github.com/labstack/echo/v4" - "github.com/opensvc/oc3/api" + "github.com/opensvc/oc3/server" ) func JSONProblemf(ctx echo.Context, code int, title, detail string, args ...any) error { @@ -17,7 +17,7 @@ func JSONProblem(ctx echo.Context, code int, title, detail string) error { if title == "" { title = http.StatusText(code) } - return ctx.JSON(code, api.Problem{ + return ctx.JSON(code, server.Problem{ Detail: detail, Title: title, Status: code, diff --git a/api/main.go b/server/main.go similarity index 90% rename from api/main.go rename to server/main.go index e0f9057..b111546 100644 --- a/api/main.go +++ b/server/main.go @@ -1,4 +1,4 @@ //go:generate go tool oapi-codegen -config codegen_server.yaml ./api.yaml //go:generate go tool oapi-codegen -config codegen_type.yaml ./api.yaml -package api +package server