reconcile_dataflow_creates.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """Inspect or repair orphaned governed DataFlow create Sagas."""
  2. from __future__ import annotations
  3. import argparse
  4. import json
  5. from app import create_app, db
  6. from app.core.data_flow.create_reconciliation import DataFlowCreateReconciler
  7. from app.core.data_rules.repository import DataRuleRepository
  8. def main() -> None:
  9. parser = argparse.ArgumentParser(
  10. description="Reconcile database-owned governed DataFlow create intents"
  11. )
  12. mode = parser.add_mutually_exclusive_group()
  13. mode.add_argument("--apply", action="store_true")
  14. mode.add_argument("--dry-run", action="store_true")
  15. parser.add_argument("--limit", type=int, default=100)
  16. parser.add_argument("--lease-seconds", type=int, default=60)
  17. args = parser.parse_args()
  18. app = create_app()
  19. with app.app_context():
  20. report = DataFlowCreateReconciler(
  21. DataRuleRepository(db.session)
  22. ).run(
  23. dry_run=not args.apply,
  24. limit=args.limit,
  25. lease_seconds=args.lease_seconds,
  26. )
  27. print(json.dumps(report, ensure_ascii=False, sort_keys=True))
  28. if __name__ == "__main__":
  29. main()