Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ deps:
$(GOCMD) get -tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest

api:
$(GOGEN) ./apifeeder
$(GOGEN) ./api
$(GOGEN) ./feeder
$(GOGEN) ./server

clean:
$(GOCLEAN)
Expand Down
30 changes: 15 additions & 15 deletions api.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
"github.com/opensvc/oc3/serverhandlers"
"github.com/opensvc/oc3/xauth"
)

func startApi() error {
addr := viper.GetString("listener_api.addr")
return listenAndServeApi(addr)
func startServer() error {
addr := viper.GetString("listener_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("listener_server.ui.enable")

db, err := newDatabase()
if err != nil {
Expand All @@ -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("listener_server.pprof.enable") {
slog.Info("add handler /oc3/api/public/pprof")
pprof.Register(e, "/oc3/api/public/pprof")
}
Expand All @@ -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("listener_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.Server{
DB: db,
Redis: redisClient,
UI: enableUI,
SyncTimeout: viper.GetDuration("listener_api.sync.timeout"),
SyncTimeout: viper.GetDuration("listener_server.sync.timeout"),
}, "/oc3/api")
if enableUI {
registerApiCollectorUI(e)
registerServerCollectorUI(e)
}
slog.Info("listen on " + addr)
return e.Start(addr)
}

func registerApiCollectorUI(e *echo.Echo) {
func registerServerCollectorUI(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()))
}
32 changes: 16 additions & 16 deletions apifeeder.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ 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 {
addr := viper.GetString("listener_feed.addr")
return listenAndServeApiFeeder(addr)
func startFeeder() error {
addr := viper.GetString("listener_feeder.addr")
return listenAndServeFeeder(addr)
}

func listenAndServeApiFeeder(addr string) error {
enableUI := viper.GetBool("listener_feed.ui.enable")
func listenAndServeFeeder(addr string) error {
enableUI := viper.GetBool("listener_feeder.ui.enable")

db, err := newDatabase()
if err != nil {
Expand All @@ -34,7 +34,7 @@ func listenAndServeApiFeeder(addr string) error {
e.HideBanner = true
e.HidePort = true

if viper.GetBool("listener_feed.pprof.enable") {
if viper.GetBool("listener_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")
Expand All @@ -44,28 +44,28 @@ func listenAndServeApiFeeder(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("listener_feeder.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.Feeder{
DB: db,
Redis: redisClient,
UI: enableUI,
SyncTimeout: viper.GetDuration("listener_feed.sync.timeout"),
SyncTimeout: viper.GetDuration("listener_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(apifeederhandlers.UIMiddleware(context.Background()))
g.Use(feederhandlers.UIMiddleware(context.Background()))
}
4 changes: 2 additions & 2 deletions cdb/db_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"log/slog"
"time"

"github.com/opensvc/oc3/apifeeder"
"github.com/opensvc/oc3/feeder"
)

type (
Expand Down Expand Up @@ -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 = "" +
Expand Down
4 changes: 2 additions & 2 deletions cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func cmdApiFeeder() *cobra.Command {
if err := setup(); err != nil {
return err
}
return startApiFeeder()
return startFeeder()
},
}
}
Expand All @@ -56,7 +56,7 @@ func cmdApiCollector() *cobra.Command {
if err := setup(); err != nil {
return err
}
return startApi()
return startServer()
},
}
}
Expand Down
20 changes: 10 additions & 10 deletions conf.go
Original file line number Diff line number Diff line change
Expand Up @@ -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("listener_feeder.addr", "127.0.0.1:8080")
viper.SetDefault("listener_feeder.pprof.enable", false)
viper.SetDefault("listener_feeder.metrics.enable", false)
viper.SetDefault("listener_feeder.ui.enable", false)
viper.SetDefault("listener_feeder.sync.timeout", "2s")
viper.SetDefault("listener_server.addr", "127.0.0.1:8081")
viper.SetDefault("listener_server.pprof.enable", false)
viper.SetDefault("listener_server.metrics.enable", false)
viper.SetDefault("listener_server.ui.enable", false)
viper.SetDefault("listener_server.sync.timeout", "2s")
viper.SetDefault("db.username", "opensvc")
viper.SetDefault("db.host", "127.0.0.1")
viper.SetDefault("db.port", "3306")
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion api/codegen_server.yaml → feeder/codegen_server.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package: api
package: feeder
generate:
echo-server: true
models: false
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion apifeeder/codegen_type.yaml → feeder/codegen_type.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package: apifeeder
package: feeder
generate:
models: true
embedded-spec: false
Expand Down
4 changes: 2 additions & 2 deletions apifeeder/codegen_type_gen.go → feeder/codegen_type_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api/main.go → feeder/main.go
Original file line number Diff line number Diff line change
@@ -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 feeder
8 changes: 4 additions & 4 deletions apihandlers/get_openapi.go → feederhandlers/get_openapi.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package apihandlers
package feederhandlers

import (
"net/http"

"github.com/labstack/echo/v4"
)

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")
func (f *Feeder) GetSwagger(ctx echo.Context) error {
if !f.UI {
return JSONProblem(ctx, http.StatusUnauthorized, "serve schema is disabled by configuration.", "listener_feeder.ui.enable = false")
}
return ctx.JSON(http.StatusOK, SCHEMA)
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package apifeederhandlers
package feederhandlers

import (
"net/http"

"github.com/labstack/echo/v4"

api "github.com/opensvc/oc3/apifeeder"
"github.com/opensvc/oc3/feeder"
)

func (a *Api) GetVersion(c echo.Context) error {
func (f *Feeder) 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})
}
2 changes: 1 addition & 1 deletion apifeederhandlers/log.go → feederhandlers/log.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package apifeederhandlers
package feederhandlers

import (
"log/slog"
Expand Down
8 changes: 4 additions & 4 deletions apihandlers/main.go → feederhandlers/main.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package apihandlers
package feederhandlers

import (
"database/sql"
Expand All @@ -7,11 +7,11 @@ import (
"github.com/getkin/kin-openapi/openapi3"
"github.com/go-redis/redis/v8"

"github.com/opensvc/oc3/api"
"github.com/opensvc/oc3/feeder"
)

type (
Api struct {
Feeder struct {
DB *sql.DB
Redis *redis.Client
UI bool
Expand All @@ -26,7 +26,7 @@ var (
)

func init() {
if schema, err := api.GetSwagger(); err == nil {
if schema, err := feeder.GetSwagger(); err == nil {
SCHEMA = *schema
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package apifeederhandlers
package feederhandlers

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion apihandlers/middleware.go → feederhandlers/middleware.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package apihandlers
package feederhandlers

import (
"net/http"
Expand Down
Loading
Loading