refactor: remove redis direct references from proxy/admin servers
This commit is contained in:
@ -2,7 +2,10 @@ package proxy
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"forge.cadoles.com/cadoles/bouncer/internal/command/common"
|
||||
@ -47,15 +50,44 @@ func RunCommand() *cli.Command {
|
||||
return errors.Wrap(err, "could not initialize director layers")
|
||||
}
|
||||
|
||||
redisClient := setup.NewSharedClient(conf.Redis)
|
||||
|
||||
proxyRepository, err := setup.NewProxyRepository(ctx.Context, redisClient)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "could not initialize proxy repository")
|
||||
}
|
||||
|
||||
layerRepository, err := setup.NewLayerRepository(ctx.Context, redisClient)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "could not initialize layer repository")
|
||||
}
|
||||
|
||||
srv := proxy.NewServer(
|
||||
proxy.WithServerConfig(conf.Proxy),
|
||||
proxy.WithRedisConfig(conf.Redis),
|
||||
proxy.WithProxyRepository(proxyRepository),
|
||||
proxy.WithLayerRepository(layerRepository),
|
||||
proxy.WithDirectorLayers(layers...),
|
||||
proxy.WithDirectorCacheTTL(time.Duration(*conf.Proxy.Cache.TTL)),
|
||||
)
|
||||
|
||||
addrs, srvErrs := srv.Start(ctx.Context)
|
||||
|
||||
// Clear director's cache on SIGUSR2
|
||||
sig := make(chan os.Signal, 1)
|
||||
signal.Notify(sig, syscall.SIGUSR2)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-sig:
|
||||
logger.Info(ctx.Context, "received sigusr2, clearing cache")
|
||||
srv.ClearCache()
|
||||
case <-ctx.Context.Done():
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
select {
|
||||
case addr := <-addrs:
|
||||
url := fmt.Sprintf("http://%s", addr.String())
|
||||
|
Reference in New Issue
Block a user