forked from TrueCloudLab/frostfs-rest-gw
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/TrueCloudLab/frostfs-rest-gw/gen/restapi"
|
|
"github.com/TrueCloudLab/frostfs-rest-gw/gen/restapi/operations"
|
|
"github.com/go-openapi/loads"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func main() {
|
|
ctx, _ := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
v := config()
|
|
logger := newLogger(v)
|
|
validateConfig(v, logger)
|
|
|
|
neofsAPI, err := newNeofsAPI(ctx, logger, v)
|
|
if err != nil {
|
|
logger.Fatal("init neofs", zap.Error(err))
|
|
}
|
|
|
|
swaggerSpec, err := loads.Analyzed(restapi.SwaggerJSON, "")
|
|
if err != nil {
|
|
logger.Fatal("init spec", zap.Error(err))
|
|
}
|
|
|
|
serverCfg := serverConfig(v)
|
|
serverCfg.SuccessfulStartCallback = neofsAPI.StartCallback
|
|
|
|
api := operations.NewFrostfsRestGwAPI(swaggerSpec)
|
|
server := restapi.NewServer(api, serverCfg)
|
|
defer func() {
|
|
if err = server.Shutdown(); err != nil {
|
|
logger.Error("shutdown", zap.Error(err))
|
|
}
|
|
}()
|
|
|
|
server.ConfigureAPI(neofsAPI.Configure)
|
|
neofsAPI.RunServices()
|
|
|
|
// serve API
|
|
if err = server.Serve(); err != nil {
|
|
logger.Fatal("serve", zap.Error(err))
|
|
}
|
|
}
|