feat: add proxmox reconciliation job
This commit is contained in:
@@ -50,9 +50,14 @@ func main() {
|
||||
server := asynq.NewServer(redis, asynq.Config{
|
||||
Concurrency: cfg.WorkerConcurrency,
|
||||
})
|
||||
scheduler := asynq.NewScheduler(redis, &asynq.SchedulerOpts{})
|
||||
mux := asynq.NewServeMux()
|
||||
clusterRepository := cluster.NewRepository(db, tokenCipher)
|
||||
registerHandlers(mux, db, clusterRepository, logger)
|
||||
if _, err := scheduler.Register("@every 5m", tasks.NewProxmoxReconcileAllTask()); err != nil {
|
||||
logger.Error("failed to register reconciliation schedule", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
go func() {
|
||||
logger.Info("worker started", "concurrency", cfg.WorkerConcurrency, "redis_addr", cfg.RedisAddr)
|
||||
@@ -61,8 +66,16 @@ func main() {
|
||||
stop()
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
logger.Info("worker scheduler started", "reconcile_interval", "5m")
|
||||
if err := scheduler.Run(); err != nil {
|
||||
logger.Error("worker scheduler failed", "error", err)
|
||||
stop()
|
||||
}
|
||||
}()
|
||||
|
||||
<-ctx.Done()
|
||||
scheduler.Shutdown()
|
||||
server.Shutdown()
|
||||
logger.Info("worker stopped")
|
||||
}
|
||||
@@ -78,6 +91,17 @@ func registerHandlers(mux *asynq.ServeMux, db *sql.DB, clusters cluster.Reposito
|
||||
logger,
|
||||
),
|
||||
)
|
||||
reconcileStore := tasks.NewSQLReconcileStore(db)
|
||||
mux.Handle(
|
||||
tasks.TypeProxmoxReconcileAll,
|
||||
tasks.NewProxmoxReconcileHandler(
|
||||
reconcileStore,
|
||||
reconcileStore,
|
||||
tasks.NewDefaultClusterReconcileClientResolver(clusters),
|
||||
tasks.NewSQLAuditWriter(db),
|
||||
logger,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
func openDatabase(databaseURL string) (*sql.DB, error) {
|
||||
|
||||
Reference in New Issue
Block a user