From e433aa7ec33bd98fa2bfceb9da6de6bc7e394e05 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Thu, 14 Oct 2021 15:05:24 +0200 Subject: [PATCH] Move custom var sync to a new method --- cmd/icingadb/main.go | 31 +------------------------------ pkg/icingadb/sync.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/cmd/icingadb/main.go b/cmd/icingadb/main.go index bccc005e..b02d6e4f 100644 --- a/cmd/icingadb/main.go +++ b/cmd/icingadb/main.go @@ -4,7 +4,6 @@ import ( "context" "github.com/go-redis/redis/v8" "github.com/icinga/icingadb/internal/command" - "github.com/icinga/icingadb/pkg/com" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/icingadb" "github.com/icinga/icingadb/pkg/icingadb/history" @@ -205,35 +204,7 @@ func run() int { return synctx.Err() } - logger.Info("Syncing customvar") - logger.Info("Syncing customvar_flat") - - cv := common.NewSyncSubject(v1.NewCustomvar) - - cvs, errs := rc.YieldAll(synctx, cv) - com.ErrgroupReceive(g, errs) - - desiredCvs, desiredFlatCvs, errs := v1.ExpandCustomvars(synctx, cvs) - com.ErrgroupReceive(g, errs) - - actualCvs, errs := db.YieldAll( - synctx, cv.Factory(), db.BuildSelectStmt(cv.Entity(), cv.Entity().Fingerprint())) - com.ErrgroupReceive(g, errs) - - g.Go(func() error { - return s.ApplyDelta(synctx, icingadb.NewDelta(synctx, actualCvs, desiredCvs, cv, logs.GetChildLogger("config-sync"))) - }) - - flatCv := common.NewSyncSubject(v1.NewCustomvarFlat) - actualFlatCvs, errs := db.YieldAll( - synctx, flatCv.Factory(), db.BuildSelectStmt(flatCv.Entity(), flatCv.Entity().Fingerprint())) - com.ErrgroupReceive(g, errs) - - g.Go(func() error { - return s.ApplyDelta(synctx, icingadb.NewDelta(synctx, actualFlatCvs, desiredFlatCvs, flatCv, logs.GetChildLogger("config-sync"))) - }) - - return nil + return s.SyncCustomvars(synctx) }) g.Go(func() error { diff --git a/pkg/icingadb/sync.go b/pkg/icingadb/sync.go index 5101e86e..98688bf9 100644 --- a/pkg/icingadb/sync.go +++ b/pkg/icingadb/sync.go @@ -6,6 +6,7 @@ import ( "github.com/icinga/icingadb/pkg/com" "github.com/icinga/icingadb/pkg/common" "github.com/icinga/icingadb/pkg/contracts" + v1 "github.com/icinga/icingadb/pkg/icingadb/v1" "github.com/icinga/icingadb/pkg/icingaredis" "github.com/icinga/icingadb/pkg/utils" "github.com/pkg/errors" @@ -157,3 +158,39 @@ func (s Sync) ApplyDelta(ctx context.Context, delta *Delta) error { return g.Wait() } + +// SyncCustomvars synchronizes customvar and customvar_flat. +func (s Sync) SyncCustomvars(ctx context.Context) error { + s.logger.Info("Syncing customvar") + s.logger.Info("Syncing customvar_flat") + + g, ctx := errgroup.WithContext(ctx) + + cv := common.NewSyncSubject(v1.NewCustomvar) + + cvs, errs := s.redis.YieldAll(ctx, cv) + com.ErrgroupReceive(g, errs) + + desiredCvs, desiredFlatCvs, errs := v1.ExpandCustomvars(ctx, cvs) + com.ErrgroupReceive(g, errs) + + actualCvs, errs := s.db.YieldAll( + ctx, cv.Factory(), s.db.BuildSelectStmt(cv.Entity(), cv.Entity().Fingerprint())) + com.ErrgroupReceive(g, errs) + + g.Go(func() error { + return s.ApplyDelta(ctx, NewDelta(ctx, actualCvs, desiredCvs, cv, s.logger)) + }) + + flatCv := common.NewSyncSubject(v1.NewCustomvarFlat) + + actualFlatCvs, errs := s.db.YieldAll( + ctx, flatCv.Factory(), s.db.BuildSelectStmt(flatCv.Entity(), flatCv.Entity().Fingerprint())) + com.ErrgroupReceive(g, errs) + + g.Go(func() error { + return s.ApplyDelta(ctx, NewDelta(ctx, actualFlatCvs, desiredFlatCvs, flatCv, s.logger)) + }) + + return g.Wait() +}