models.py 1001 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. from enum import Enum
  4. from typing import Any, Mapping, Optional, Tuple
  5. class EngineType(str, Enum):
  6. N8N = "n8n"
  7. KESTRA = "kestra"
  8. class EngineRole(str, Enum):
  9. PRIMARY = "primary"
  10. SHADOW = "shadow"
  11. STANDBY = "standby"
  12. ARCHIVED = "archived"
  13. @dataclass(frozen=True)
  14. class WorkflowVersion:
  15. id: str
  16. dataflow_uid: str
  17. environment: str
  18. version_no: int
  19. engine_type: EngineType
  20. engine_definition_id: str
  21. definition_hash: str
  22. status: str
  23. engine_revision: Optional[str] = None
  24. deployment_metadata: Optional[Mapping[str, Any]] = None
  25. @dataclass(frozen=True)
  26. class EngineBinding:
  27. id: str
  28. workflow_version_id: str
  29. engine_type: EngineType
  30. engine_definition_id: str
  31. role: EngineRole
  32. environment: str
  33. engine_revision: Optional[str] = None
  34. @dataclass(frozen=True)
  35. class PolicyDecision:
  36. allowed: bool
  37. risk: str
  38. reasons: Tuple[str, ...]