mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-03 12:26:03 +02:00
34 lines
782 B
Go
34 lines
782 B
Go
package reconciler
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/pomerium/pomerium/pkg/grpc/databroker"
|
|
)
|
|
|
|
// Reconcile reconciles the target and current record sets with the databroker.
|
|
func Reconcile(
|
|
ctx context.Context,
|
|
client databroker.DataBrokerServiceClient,
|
|
target, current RecordSetBundle[DatabrokerRecord],
|
|
) error {
|
|
updates := NewDatabrokerChangeSet()
|
|
|
|
for _, rec := range current.GetRemoved(target).Flatten() {
|
|
updates.Remove(rec.GetType(), rec.GetID())
|
|
}
|
|
for _, rec := range current.GetModified(target).Flatten() {
|
|
updates.Upsert(rec.V)
|
|
}
|
|
for _, rec := range current.GetAdded(target).Flatten() {
|
|
updates.Upsert(rec.V)
|
|
}
|
|
|
|
err := ApplyChanges(ctx, client, updates)
|
|
if err != nil {
|
|
return fmt.Errorf("apply databroker changes: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|