feat: share proxmox cluster client with worker

This commit is contained in:
Philipp
2026-06-11 10:24:36 +02:00
parent 7c818cf92e
commit bf31a8db37
16 changed files with 240 additions and 14 deletions
+12 -3
View File
@@ -11,7 +11,9 @@ import (
"syscall"
"time"
"forgejo.digital-droplets.de/philschlo/proxui/platform/cluster"
"forgejo.digital-droplets.de/philschlo/proxui/platform/config"
"forgejo.digital-droplets.de/philschlo/proxui/platform/encryption"
"forgejo.digital-droplets.de/philschlo/proxui/platform/logging"
"github.com/hibiken/asynq"
_ "github.com/jackc/pgx/v5/stdlib"
@@ -28,6 +30,12 @@ func main() {
}
logger := logging.New("worker", cfg.AppEnv, cfg.LogLevel)
tokenCipher, err := encryption.NewFromBase64(cfg.MasterKeyBase64)
if err != nil {
logger.Error("failed to initialize cluster token encryption", "error", err)
os.Exit(1)
}
db, err := openDatabase(cfg.DatabaseURL)
if err != nil {
logger.Error("failed to connect database", "error", err)
@@ -43,7 +51,8 @@ func main() {
Concurrency: cfg.WorkerConcurrency,
})
mux := asynq.NewServeMux()
registerHandlers(mux, db, logger)
clusterRepository := cluster.NewRepository(db, tokenCipher)
registerHandlers(mux, db, clusterRepository, logger)
go func() {
logger.Info("worker started", "concurrency", cfg.WorkerConcurrency, "redis_addr", cfg.RedisAddr)
@@ -58,12 +67,12 @@ func main() {
logger.Info("worker stopped")
}
func registerHandlers(mux *asynq.ServeMux, db *sql.DB, logger *slog.Logger) {
func registerHandlers(mux *asynq.ServeMux, db *sql.DB, clusters cluster.Repository, logger *slog.Logger) {
mux.Handle(tasks.TypeDummy, tasks.NewDummyHandler(logger))
mux.Handle(
tasks.TypeProxmoxTaskPoll,
tasks.NewProxmoxTaskPollHandler(
tasks.UnconfiguredProxmoxTaskClientResolver{},
tasks.NewDefaultClusterTaskClientResolver(clusters),
tasks.NewSQLVMStatusStore(db),
tasks.NewSQLAuditWriter(db),
logger,