orchestrator-core 4.1.0rc1__tar.gz → 4.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (683) hide show
  1. orchestrator_core-4.2.0/PKG-INFO +167 -0
  2. orchestrator_core-4.2.0/README.md +96 -0
  3. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/__init__.py +1 -1
  4. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/processes.py +65 -11
  5. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/subscriptions.py +25 -2
  6. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/database.py +8 -1
  7. orchestrator_core-4.2.0/orchestrator/cli/domain_gen_helpers/helpers.py +97 -0
  8. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +35 -15
  9. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +5 -5
  10. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/domain_gen_helpers/types.py +7 -1
  11. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/create_product.j2 +1 -2
  12. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/migrate_domain_models.py +16 -5
  13. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/models.py +6 -3
  14. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/process.py +21 -2
  15. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/product.py +8 -9
  16. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/workflow.py +9 -0
  17. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/types.py +7 -1
  18. orchestrator_core-4.2.0/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +65 -0
  19. orchestrator_core-4.2.0/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +30 -0
  20. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/process.py +5 -1
  21. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/celery.py +7 -2
  22. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/processes.py +12 -12
  23. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/settings_env_variables.py +3 -15
  24. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/settings.py +1 -1
  25. orchestrator_core-4.2.0/orchestrator/utils/auth.py +9 -0
  26. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/enrich_process.py +4 -2
  27. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/errors.py +2 -1
  28. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflow.py +52 -9
  29. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/modify_note.py +1 -1
  30. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/steps.py +14 -8
  31. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/utils.py +13 -7
  32. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/pyproject.toml +91 -92
  33. orchestrator_core-4.1.0rc1/.bumpversion.cfg +0 -12
  34. orchestrator_core-4.1.0rc1/.coveragerc +0 -2
  35. orchestrator_core-4.1.0rc1/.github/ISSUE_TEMPLATE/bug-report.yml +0 -52
  36. orchestrator_core-4.1.0rc1/.github/ISSUE_TEMPLATE/feature-request.yml +0 -32
  37. orchestrator_core-4.1.0rc1/.github/dependabot.yml +0 -11
  38. orchestrator_core-4.1.0rc1/.github/workflows/README.md +0 -65
  39. orchestrator_core-4.1.0rc1/.github/workflows/build-push-container.yml +0 -58
  40. orchestrator_core-4.1.0rc1/.github/workflows/changelog.yml +0 -13
  41. orchestrator_core-4.1.0rc1/.github/workflows/codeql-analysis.yml +0 -68
  42. orchestrator_core-4.1.0rc1/.github/workflows/gh-pages.yml +0 -17
  43. orchestrator_core-4.1.0rc1/.github/workflows/issues.yml +0 -13
  44. orchestrator_core-4.1.0rc1/.github/workflows/publish-package.yml +0 -25
  45. orchestrator_core-4.1.0rc1/.github/workflows/run-codspeed-tests.yml +0 -71
  46. orchestrator_core-4.1.0rc1/.github/workflows/run-linting-tests.yml +0 -36
  47. orchestrator_core-4.1.0rc1/.github/workflows/run-unit-tests.yml +0 -68
  48. orchestrator_core-4.1.0rc1/.github/workflows/scheduled-build.yml +0 -42
  49. orchestrator_core-4.1.0rc1/.gitignore +0 -135
  50. orchestrator_core-4.1.0rc1/.pre-commit-config.yaml +0 -86
  51. orchestrator_core-4.1.0rc1/.stignore +0 -101
  52. orchestrator_core-4.1.0rc1/CHANGELOG.md +0 -481
  53. orchestrator_core-4.1.0rc1/Dockerfile +0 -24
  54. orchestrator_core-4.1.0rc1/NOTICE +0 -7
  55. orchestrator_core-4.1.0rc1/PKG-INFO +0 -118
  56. orchestrator_core-4.1.0rc1/README.md +0 -200
  57. orchestrator_core-4.1.0rc1/codecov.yml +0 -8
  58. orchestrator_core-4.1.0rc1/docs/architecture/application/domainmodels.md +0 -236
  59. orchestrator_core-4.1.0rc1/docs/architecture/application/forms-frontend.md +0 -231
  60. orchestrator_core-4.1.0rc1/docs/architecture/application/tasks.md +0 -169
  61. orchestrator_core-4.1.0rc1/docs/architecture/application/workflow.md +0 -295
  62. orchestrator_core-4.1.0rc1/docs/architecture/framework.md +0 -28
  63. orchestrator_core-4.1.0rc1/docs/architecture/img/base-orchestrator-setup.png +0 -0
  64. orchestrator_core-4.1.0rc1/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  65. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  66. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  67. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/orchestrator-ui.md +0 -265
  68. orchestrator_core-4.1.0rc1/docs/architecture/orchestration/philosophy.md +0 -16
  69. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/backfilling.md +0 -77
  70. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/context.md +0 -11
  71. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/imports.md +0 -90
  72. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/introduction.md +0 -13
  73. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/ip_static.md +0 -27
  74. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/ip_static.png +0 -0
  75. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_point_to_point.md +0 -21
  76. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  77. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_vpn.md +0 -15
  78. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/l2_vpn.png +0 -0
  79. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/modelling.md +0 -22
  80. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/node.md +0 -20
  81. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/node.png +0 -0
  82. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/port.md +0 -20
  83. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/port.png +0 -0
  84. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/product_block_graph.md +0 -26
  85. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/product_block_graph.png +0 -0
  86. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/standards.md +0 -16
  87. orchestrator_core-4.1.0rc1/docs/architecture/product_modelling/terminology.md +0 -17
  88. orchestrator_core-4.1.0rc1/docs/architecture/tldr.md +0 -40
  89. orchestrator_core-4.1.0rc1/docs/contributing/development.md +0 -109
  90. orchestrator_core-4.1.0rc1/docs/contributing/guidelines.md +0 -41
  91. orchestrator_core-4.1.0rc1/docs/contributing/testing.md +0 -278
  92. orchestrator_core-4.1.0rc1/docs/css/custom.css +0 -24
  93. orchestrator_core-4.1.0rc1/docs/css/style.css +0 -27
  94. orchestrator_core-4.1.0rc1/docs/css/termynal.css +0 -108
  95. orchestrator_core-4.1.0rc1/docs/getting-started/base.md +0 -99
  96. orchestrator_core-4.1.0rc1/docs/getting-started/docker.md +0 -23
  97. orchestrator_core-4.1.0rc1/docs/getting-started/orchestration-ui.md +0 -59
  98. orchestrator_core-4.1.0rc1/docs/getting-started/prepare-source-folder.md +0 -110
  99. orchestrator_core-4.1.0rc1/docs/getting-started/versions.md +0 -12
  100. orchestrator_core-4.1.0rc1/docs/img/WFO-Emblem-White.png +0 -0
  101. orchestrator_core-4.1.0rc1/docs/img/favicon.ico +0 -0
  102. orchestrator_core-4.1.0rc1/docs/index.md +0 -82
  103. orchestrator_core-4.1.0rc1/docs/js/custom.js +0 -105
  104. orchestrator_core-4.1.0rc1/docs/js/termynal.js +0 -264
  105. orchestrator_core-4.1.0rc1/docs/migration-guide/2.0.md +0 -331
  106. orchestrator_core-4.1.0rc1/docs/migration-guide/3.0.md +0 -14
  107. orchestrator_core-4.1.0rc1/docs/migration-guide/4.0.md +0 -73
  108. orchestrator_core-4.1.0rc1/docs/reference-docs/api.md +0 -6
  109. orchestrator_core-4.1.0rc1/docs/reference-docs/app/app.md +0 -26
  110. orchestrator_core-4.1.0rc1/docs/reference-docs/app/scaling.md +0 -250
  111. orchestrator_core-4.1.0rc1/docs/reference-docs/app/settings_overview.md +0 -89
  112. orchestrator_core-4.1.0rc1/docs/reference-docs/auth-backend-and-frontend.md +0 -278
  113. orchestrator_core-4.1.0rc1/docs/reference-docs/cli.md +0 -761
  114. orchestrator_core-4.1.0rc1/docs/reference-docs/database.md +0 -36
  115. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/generator.md +0 -3
  116. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/instantiating.md +0 -0
  117. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/model_attributes.md +0 -57
  118. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/overview.md +0 -4
  119. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/product_blocks.md +0 -44
  120. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/product_types.md +0 -56
  121. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/properties.md +0 -0
  122. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  123. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/type_casting.md +0 -0
  124. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/union_types.md +0 -0
  125. orchestrator_core-4.1.0rc1/docs/reference-docs/domain_models/validation.md +0 -0
  126. orchestrator_core-4.1.0rc1/docs/reference-docs/forms.md +0 -438
  127. orchestrator_core-4.1.0rc1/docs/reference-docs/graphql.md +0 -686
  128. orchestrator_core-4.1.0rc1/docs/reference-docs/metrics.md +0 -45
  129. orchestrator_core-4.1.0rc1/docs/reference-docs/python.md +0 -27
  130. orchestrator_core-4.1.0rc1/docs/reference-docs/search.md +0 -264
  131. orchestrator_core-4.1.0rc1/docs/reference-docs/search_overview.png +0 -0
  132. orchestrator_core-4.1.0rc1/docs/reference-docs/serialization.md +0 -0
  133. orchestrator_core-4.1.0rc1/docs/reference-docs/tasks.md +0 -0
  134. orchestrator_core-4.1.0rc1/docs/reference-docs/tests.md +0 -0
  135. orchestrator_core-4.1.0rc1/docs/reference-docs/tldr.md +0 -3
  136. orchestrator_core-4.1.0rc1/docs/reference-docs/websockets.md +0 -107
  137. orchestrator_core-4.1.0rc1/docs/reference-docs/workflows/callbacks.md +0 -178
  138. orchestrator_core-4.1.0rc1/docs/reference-docs/workflows/workflow-lifecycles.md +0 -9
  139. orchestrator_core-4.1.0rc1/docs/reference-docs/workflows/workflow-steps.md +0 -28
  140. orchestrator_core-4.1.0rc1/docs/workshops/advanced/bootstrap.md +0 -168
  141. orchestrator_core-4.1.0rc1/docs/workshops/advanced/create-your-own.md +0 -9
  142. orchestrator_core-4.1.0rc1/docs/workshops/advanced/docker-installation.md +0 -89
  143. orchestrator_core-4.1.0rc1/docs/workshops/advanced/domain-models.md +0 -10
  144. orchestrator_core-4.1.0rc1/docs/workshops/advanced/execute-workflows.md +0 -46
  145. orchestrator_core-4.1.0rc1/docs/workshops/advanced/generator.md +0 -169
  146. orchestrator_core-4.1.0rc1/docs/workshops/advanced/l2_point_to_point.png +0 -0
  147. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-create.md +0 -2
  148. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-modify.md +0 -2
  149. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-terminate.md +0 -2
  150. orchestrator_core-4.1.0rc1/docs/workshops/advanced/node-validate.md +0 -2
  151. orchestrator_core-4.1.0rc1/docs/workshops/advanced/overview.md +0 -86
  152. orchestrator_core-4.1.0rc1/docs/workshops/advanced/scenario.md +0 -19
  153. orchestrator_core-4.1.0rc1/docs/workshops/advanced/workflow-basics.md +0 -3
  154. orchestrator_core-4.1.0rc1/docs/workshops/advanced/workflow-introduction.md +0 -36
  155. orchestrator_core-4.1.0rc1/docs/workshops/beginner/create-user-group.md +0 -132
  156. orchestrator_core-4.1.0rc1/docs/workshops/beginner/create-user.md +0 -137
  157. orchestrator_core-4.1.0rc1/docs/workshops/beginner/database-migration.md +0 -192
  158. orchestrator_core-4.1.0rc1/docs/workshops/beginner/debian.md +0 -145
  159. orchestrator_core-4.1.0rc1/docs/workshops/beginner/docker.md +0 -78
  160. orchestrator_core-4.1.0rc1/docs/workshops/beginner/domain-models.md +0 -187
  161. orchestrator_core-4.1.0rc1/docs/workshops/beginner/explore.md +0 -73
  162. orchestrator_core-4.1.0rc1/docs/workshops/beginner/input-forms.md +0 -111
  163. orchestrator_core-4.1.0rc1/docs/workshops/beginner/macos.md +0 -146
  164. orchestrator_core-4.1.0rc1/docs/workshops/beginner/modify-user-group.md +0 -79
  165. orchestrator_core-4.1.0rc1/docs/workshops/beginner/modify-user.md +0 -61
  166. orchestrator_core-4.1.0rc1/docs/workshops/beginner/register-workflows.md +0 -113
  167. orchestrator_core-4.1.0rc1/docs/workshops/beginner/start-applications.md +0 -40
  168. orchestrator_core-4.1.0rc1/docs/workshops/beginner/terminate-user-group.md +0 -79
  169. orchestrator_core-4.1.0rc1/docs/workshops/beginner/terminate-user.md +0 -44
  170. orchestrator_core-4.1.0rc1/docs/workshops/beginner/workflow-introduction.md +0 -78
  171. orchestrator_core-4.1.0rc1/docs/workshops/beginner/workshop-overview.md +0 -92
  172. orchestrator_core-4.1.0rc1/docs/workshops/images/Software-topology.drawio.png +0 -0
  173. orchestrator_core-4.1.0rc1/docs/workshops/images/clab_topology.png +0 -0
  174. orchestrator_core-4.1.0rc1/docs/workshops/images/metadata_products.png +0 -0
  175. orchestrator_core-4.1.0rc1/docs/workshops/images/netbox_devices_active.png +0 -0
  176. orchestrator_core-4.1.0rc1/docs/workshops/images/subscriptions.png +0 -0
  177. orchestrator_core-4.1.0rc1/docs/workshops/images/topology.drawio.png +0 -0
  178. orchestrator_core-4.1.0rc1/includes/abbreviations.md +0 -6
  179. orchestrator_core-4.1.0rc1/mkdocs.yml +0 -248
  180. orchestrator_core-4.1.0rc1/nitpick-style.toml +0 -2
  181. orchestrator_core-4.1.0rc1/orchestrator/cli/domain_gen_helpers/helpers.py +0 -55
  182. orchestrator_core-4.1.0rc1/setup.cfg +0 -69
  183. orchestrator_core-4.1.0rc1/setup.py +0 -20
  184. orchestrator_core-4.1.0rc1/test/__init__.py +0 -0
  185. orchestrator_core-4.1.0rc1/test/acceptance_tests/__init__.py +0 -0
  186. orchestrator_core-4.1.0rc1/test/acceptance_tests/conftest.py +0 -110
  187. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  188. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  189. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -61
  190. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -40
  191. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  192. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -46
  193. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  194. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -33
  195. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  196. orchestrator_core-4.1.0rc1/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -84
  197. orchestrator_core-4.1.0rc1/test/acceptance_tests/test_test_product.py +0 -23
  198. orchestrator_core-4.1.0rc1/test/unit_tests/__init__.py +0 -0
  199. orchestrator_core-4.1.0rc1/test/unit_tests/api/__init__.py +0 -0
  200. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_health.py +0 -30
  201. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_helpers.py +0 -85
  202. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_models.py +0 -45
  203. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_processes.py +0 -595
  204. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_processes_ws.py +0 -334
  205. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_product_blocks.py +0 -58
  206. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_products.py +0 -202
  207. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_resource_types.py +0 -56
  208. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_settings.py +0 -98
  209. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -145
  210. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_subscriptions.py +0 -846
  211. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_workflows.py +0 -57
  212. orchestrator_core-4.1.0rc1/test/unit_tests/api/test_ws.py +0 -103
  213. orchestrator_core-4.1.0rc1/test/unit_tests/cli/__init__.py +0 -0
  214. orchestrator_core-4.1.0rc1/test/unit_tests/cli/conftest.py +0 -33
  215. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/alembic.ini +0 -45
  216. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/main.py +0 -7
  217. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/env.py +0 -89
  218. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -3
  219. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -23
  220. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -21
  221. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -93
  222. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -135
  223. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -105
  224. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/__init__.py +0 -26
  225. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  226. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -61
  227. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -30
  228. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -26
  229. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -21
  230. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  231. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -28
  232. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -16
  233. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -16
  234. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -53
  235. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -53
  236. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -53
  237. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -83
  238. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -70
  239. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -43
  240. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -35
  241. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -32
  242. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -33
  243. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -26
  244. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -16
  245. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -32
  246. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -33
  247. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -26
  248. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -16
  249. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -16
  250. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -14
  251. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -110
  252. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -98
  253. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -15
  254. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -46
  255. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -29
  256. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -79
  257. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -73
  258. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -1
  259. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -39
  260. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -78
  261. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -71
  262. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -1
  263. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -39
  264. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate/workflows/shared.py +0 -36
  265. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/generate.sh +0 -25
  266. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -20
  267. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -24
  268. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config1.yaml +0 -87
  269. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config2.yaml +0 -29
  270. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config3.yaml +0 -26
  271. orchestrator_core-4.1.0rc1/test/unit_tests/cli/data/product_config4.yaml +0 -32
  272. orchestrator_core-4.1.0rc1/test/unit_tests/cli/generator/__init__.py +0 -0
  273. orchestrator_core-4.1.0rc1/test/unit_tests/cli/generator/test_enums.py +0 -27
  274. orchestrator_core-4.1.0rc1/test/unit_tests/cli/helpers.py +0 -19
  275. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_cli_generate.py +0 -68
  276. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_config_validation.py +0 -20
  277. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_generate_code.py +0 -152
  278. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -764
  279. orchestrator_core-4.1.0rc1/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -728
  280. orchestrator_core-4.1.0rc1/test/unit_tests/config.py +0 -12
  281. orchestrator_core-4.1.0rc1/test/unit_tests/conftest.py +0 -805
  282. orchestrator_core-4.1.0rc1/test/unit_tests/db/__init__.py +0 -0
  283. orchestrator_core-4.1.0rc1/test/unit_tests/db/test_listeners.py +0 -23
  284. orchestrator_core-4.1.0rc1/test/unit_tests/db/test_migration_does_column_exist.py +0 -10
  285. orchestrator_core-4.1.0rc1/test/unit_tests/domain/__init__.py +0 -0
  286. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base.py +0 -1301
  287. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_multiple.py +0 -226
  288. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_performance.py +0 -160
  289. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_serializable_property.py +0 -170
  290. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_with_list_union.py +0 -189
  291. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_base_with_union.py +0 -108
  292. orchestrator_core-4.1.0rc1/test/unit_tests/domain/test_lifecycle.py +0 -49
  293. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/__init__.py +0 -88
  294. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/processes.py +0 -180
  295. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/__init__.py +0 -0
  296. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  297. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -67
  298. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -84
  299. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -55
  300. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -64
  301. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -59
  302. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -35
  303. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -32
  304. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  305. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -64
  306. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -52
  307. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -101
  308. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -95
  309. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -65
  310. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -82
  311. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -57
  312. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -57
  313. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -45
  314. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -41
  315. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -300
  316. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/products/resource_types.py +0 -28
  317. orchestrator_core-4.1.0rc1/test/unit_tests/fixtures/workflows.py +0 -22
  318. orchestrator_core-4.1.0rc1/test/unit_tests/forms/__init__.py +0 -0
  319. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_customer_contact_list.py +0 -140
  320. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_customer_id.py +0 -17
  321. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_display_subscription.py +0 -77
  322. orchestrator_core-4.1.0rc1/test/unit_tests/forms/test_generic_validators.py +0 -121
  323. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/__init__.py +0 -0
  324. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/conftest.py +0 -55
  325. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/extensions/__init__.py +0 -0
  326. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/extensions/test_stats.py +0 -30
  327. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/mutations/helpers.py +0 -17
  328. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/mutations/test_customer_description.py +0 -296
  329. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/mutations/test_start_process.py +0 -86
  330. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_customer.py +0 -69
  331. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_process.py +0 -42
  332. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_processes.py +0 -679
  333. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_product.py +0 -350
  334. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_product_blocks.py +0 -317
  335. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_resource_types.py +0 -174
  336. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_settings.py +0 -166
  337. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -74
  338. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_subscription.py +0 -105
  339. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_subscription_relations.py +0 -617
  340. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_subscriptions.py +0 -1581
  341. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_version.py +0 -21
  342. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/test_workflows.py +0 -234
  343. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/__init__.py +0 -0
  344. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/fixtures.py +0 -157
  345. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_autoregistration.py +0 -12
  346. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -55
  347. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -49
  348. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -207
  349. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -95
  350. orchestrator_core-4.1.0rc1/test/unit_tests/graphql/utils/test_override_class.py +0 -290
  351. orchestrator_core-4.1.0rc1/test/unit_tests/helpers.py +0 -32
  352. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/__init__.py +0 -0
  353. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/conftest.py +0 -27
  354. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/test_engine_metrics.py +0 -18
  355. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/test_process_metrics.py +0 -27
  356. orchestrator_core-4.1.0rc1/test/unit_tests/metrics/test_subscription_metrics.py +0 -60
  357. orchestrator_core-4.1.0rc1/test/unit_tests/migrations/__init__.py +0 -0
  358. orchestrator_core-4.1.0rc1/test/unit_tests/migrations/test_cascade_constraint.py +0 -55
  359. orchestrator_core-4.1.0rc1/test/unit_tests/schedules/__init__.py +0 -0
  360. orchestrator_core-4.1.0rc1/test/unit_tests/schedules/test_scheduling.py +0 -26
  361. orchestrator_core-4.1.0rc1/test/unit_tests/services/__init__.py +0 -0
  362. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_expose_settings.py +0 -35
  363. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_input_state.py +0 -62
  364. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_processes.py +0 -927
  365. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_products.py +0 -39
  366. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_subscription_relations.py +0 -190
  367. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_subscriptions.py +0 -160
  368. orchestrator_core-4.1.0rc1/test/unit_tests/services/test_translations.py +0 -61
  369. orchestrator_core-4.1.0rc1/test/unit_tests/test_db.py +0 -183
  370. orchestrator_core-4.1.0rc1/test/unit_tests/test_types.py +0 -12
  371. orchestrator_core-4.1.0rc1/test/unit_tests/test_workflow.py +0 -630
  372. orchestrator_core-4.1.0rc1/test/unit_tests/utils/__init__.py +0 -0
  373. orchestrator_core-4.1.0rc1/test/unit_tests/utils/get_subscription_dict.py +0 -11
  374. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_datetime.py +0 -6
  375. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_errors.py +0 -54
  376. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_functional.py +0 -127
  377. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_get_updated_properties.py +0 -127
  378. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_json.py +0 -119
  379. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_search_query.py +0 -170
  380. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_state.py +0 -490
  381. orchestrator_core-4.1.0rc1/test/unit_tests/utils/test_strings.py +0 -6
  382. orchestrator_core-4.1.0rc1/test/unit_tests/websocket/__init__.py +0 -0
  383. orchestrator_core-4.1.0rc1/test/unit_tests/websocket/test_broadcast.py +0 -93
  384. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/__init__.py +0 -384
  385. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/conftest.py +0 -0
  386. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/shared/__init__.py +0 -0
  387. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -58
  388. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/__init__.py +0 -0
  389. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -75
  390. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -79
  391. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -39
  392. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/tasks/test_validate_products.py +0 -9
  393. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_async_workflow.py +0 -331
  394. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_config_db_code.py +0 -77
  395. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -103
  396. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -64
  397. orchestrator_core-4.1.0rc1/test/unit_tests/workflows/test_modify_note.py +0 -26
  398. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/LICENSE +0 -0
  399. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/__init__.py +0 -0
  400. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/__init__.py +0 -0
  401. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/api.py +0 -0
  402. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  403. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  404. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  405. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  406. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  407. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  408. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  409. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  410. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  411. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  412. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  413. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/error_handling.py +0 -0
  414. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/helpers.py +0 -0
  415. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/api/models.py +0 -0
  416. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/app.py +0 -0
  417. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/__init__.py +0 -0
  418. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  419. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  420. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  421. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generate.py +0 -0
  422. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/__init__.py +0 -0
  423. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/README +0 -0
  424. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  425. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  426. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  427. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  428. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  429. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  430. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  431. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  432. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  433. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/__init__.py +0 -0
  434. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/enums.py +0 -0
  435. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/helpers.py +0 -0
  436. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/migration.py +0 -0
  437. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/product.py +0 -0
  438. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/product_block.py +0 -0
  439. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/settings.py +0 -0
  440. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/translations.py +0 -0
  441. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/unittest.py +0 -0
  442. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/validations.py +0 -0
  443. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/generator/workflow.py +0 -0
  444. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  445. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  446. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  447. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  448. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  449. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  450. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  451. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  452. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  453. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  454. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  455. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  456. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  457. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  458. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  459. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  460. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  461. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/product.j2 +0 -0
  462. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  463. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  464. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  465. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  466. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  467. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  468. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  469. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  470. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  471. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  472. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  473. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/helpers/__init__.py +0 -0
  474. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/helpers/input_helpers.py +0 -0
  475. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/helpers/print_helpers.py +0 -0
  476. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/main.py +0 -0
  477. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/migrate_tasks.py +0 -0
  478. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/migrate_workflows.py +0 -0
  479. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/migration_helpers.py +0 -0
  480. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/cli/scheduler.py +0 -0
  481. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/config/__init__.py +0 -0
  482. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/config/assignee.py +0 -0
  483. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/__init__.py +0 -0
  484. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/database.py +0 -0
  485. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/__init__.py +0 -0
  486. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/filters.py +0 -0
  487. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/process.py +0 -0
  488. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/product.py +0 -0
  489. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/product_block.py +0 -0
  490. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/resource_type.py +0 -0
  491. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  492. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  493. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/subscription.py +0 -0
  494. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/filters/workflow.py +0 -0
  495. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/helpers.py +0 -0
  496. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/listeners.py +0 -0
  497. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/loaders.py +0 -0
  498. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/queries/__init__.py +0 -0
  499. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/queries/subscription.py +0 -0
  500. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/queries/subscription_instance.py +0 -0
  501. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/range/__init__.py +0 -0
  502. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/range/range.py +0 -0
  503. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/__init__.py +0 -0
  504. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/process.py +0 -0
  505. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/product.py +0 -0
  506. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/product_block.py +0 -0
  507. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/resource_type.py +0 -0
  508. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/sorting.py +0 -0
  509. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/subscription.py +0 -0
  510. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/db/sorting/workflow.py +0 -0
  511. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/devtools/__init__.py +0 -0
  512. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/devtools/populator.py +0 -0
  513. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/devtools/scripts/__init__.py +0 -0
  514. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  515. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  516. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/devtools/scripts/shared.py +0 -0
  517. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/distlock/__init__.py +0 -0
  518. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/distlock/distlock_manager.py +0 -0
  519. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/distlock/managers/__init__.py +0 -0
  520. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  521. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  522. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/__init__.py +0 -0
  523. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/base.py +0 -0
  524. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/context_cache.py +0 -0
  525. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/customer_description.py +0 -0
  526. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/helpers.py +0 -0
  527. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/lifecycle.py +0 -0
  528. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/domain/subscription_instance_transform.py +0 -0
  529. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/exception_handlers.py +0 -0
  530. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/__init__.py +0 -0
  531. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/validators/__init__.py +0 -0
  532. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  533. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/validators/customer_id.py +0 -0
  534. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/validators/display_subscription.py +0 -0
  535. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/validators/network_type_validators.py +0 -0
  536. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/forms/validators/product_id.py +0 -0
  537. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/__init__.py +0 -0
  538. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/autoregistration.py +0 -0
  539. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/extensions/__init__.py +0 -0
  540. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/extensions/model_cache.py +0 -0
  541. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/extensions/stats.py +0 -0
  542. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/loaders/__init__.py +0 -0
  543. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  544. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/mutations/customer_description.py +0 -0
  545. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/mutations/start_process.py +0 -0
  546. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/pagination.py +0 -0
  547. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/__init__.py +0 -0
  548. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/customer.py +0 -0
  549. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/helpers.py +0 -0
  550. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/process.py +0 -0
  551. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/product.py +0 -0
  552. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/product_block.py +0 -0
  553. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  554. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/settings.py +0 -0
  555. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/subscription.py +0 -0
  556. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/version.py +0 -0
  557. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/resolvers/workflow.py +0 -0
  558. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schema.py +0 -0
  559. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/__init__.py +0 -0
  560. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/customer.py +0 -0
  561. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/customer_description.py +0 -0
  562. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/errors.py +0 -0
  563. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  564. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/helpers.py +0 -0
  565. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/product_block.py +0 -0
  566. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/resource_type.py +0 -0
  567. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/settings.py +0 -0
  568. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  569. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/subscription.py +0 -0
  570. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/schemas/version.py +0 -0
  571. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/__init__.py +0 -0
  572. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  573. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  574. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  575. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  576. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  577. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  578. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/override_class.py +0 -0
  579. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  580. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/log_config.py +0 -0
  581. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/metrics/__init__.py +0 -0
  582. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/metrics/engine.py +0 -0
  583. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/metrics/init.py +0 -0
  584. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/metrics/processes.py +0 -0
  585. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/metrics/subscriptions.py +0 -0
  586. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/README +0 -0
  587. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/alembic.ini +0 -0
  588. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/env.py +0 -0
  589. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/helpers.py +0 -0
  590. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/script.py.mako +0 -0
  591. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  592. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/templates/env.py.j2 +0 -0
  593. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  594. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  595. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  596. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  597. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  598. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  599. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  600. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  601. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  602. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  603. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  604. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  605. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  606. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  607. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  608. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  609. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  610. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  611. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  612. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  613. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  614. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  615. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  616. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  617. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  618. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  619. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  620. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/py.typed +0 -0
  621. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schedules/__init__.py +0 -0
  622. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schedules/resume_workflows.py +0 -0
  623. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schedules/scheduling.py +0 -0
  624. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schedules/task_vacuum.py +0 -0
  625. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schedules/validate_products.py +0 -0
  626. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schedules/validate_subscriptions.py +0 -0
  627. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/__init__.py +0 -0
  628. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/base.py +0 -0
  629. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/engine_settings.py +0 -0
  630. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/fixed_input.py +0 -0
  631. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/problem_detail.py +0 -0
  632. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/product.py +0 -0
  633. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/product_block.py +0 -0
  634. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/resource_type.py +0 -0
  635. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/subscription.py +0 -0
  636. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/subscription_descriptions.py +0 -0
  637. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/schemas/workflow.py +0 -0
  638. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/security.py +0 -0
  639. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/__init__.py +0 -0
  640. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/fixed_inputs.py +0 -0
  641. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/input_state.py +0 -0
  642. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/process_broadcast_thread.py +0 -0
  643. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/products.py +0 -0
  644. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/resource_types.py +0 -0
  645. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/settings.py +0 -0
  646. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/subscription_relations.py +0 -0
  647. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/subscriptions.py +0 -0
  648. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/tasks.py +0 -0
  649. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/translations.py +0 -0
  650. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/services/workflows.py +0 -0
  651. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/targets.py +0 -0
  652. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/types.py +0 -0
  653. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/__init__.py +0 -0
  654. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/crypt.py +0 -0
  655. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/datetime.py +0 -0
  656. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/deprecation_logger.py +0 -0
  657. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/docs.py +0 -0
  658. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/expose_settings.py +0 -0
  659. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/fixed_inputs.py +0 -0
  660. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/functional.py +0 -0
  661. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/get_subscription_dict.py +0 -0
  662. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/get_updated_properties.py +0 -0
  663. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/helpers.py +0 -0
  664. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/json.py +0 -0
  665. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/redis.py +0 -0
  666. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/redis_client.py +0 -0
  667. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/search_query.py +0 -0
  668. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/state.py +0 -0
  669. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/strings.py +0 -0
  670. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/utils/validate_data_version.py +0 -0
  671. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/version.py +0 -0
  672. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/websocket/__init__.py +0 -0
  673. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  674. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  675. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/websocket/websocket_manager.py +0 -0
  676. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/__init__.py +0 -0
  677. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/removed_workflow.py +0 -0
  678. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/tasks/__init__.py +0 -0
  679. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  680. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  681. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  682. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/tasks/validate_products.py +0 -0
  683. {orchestrator_core-4.1.0rc1 → orchestrator_core-4.2.0}/orchestrator/workflows/translations/en-GB.json +0 -0
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.4
2
+ Name: orchestrator-core
3
+ Version: 4.2.0
4
+ Summary: This is the orchestrator workflow engine.
5
+ Author-email: SURF <automation-beheer@surf.nl>
6
+ Requires-Python: >=3.11,<3.14
7
+ Description-Content-Type: text/markdown
8
+ License-Expression: Apache-2.0
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Environment :: Web Environment
11
+ Classifier: Framework :: AsyncIO
12
+ Classifier: Framework :: FastAPI
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Information Technology
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: Intended Audience :: Telecommunications Industry
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python
24
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
25
+ Classifier: Topic :: Internet :: WWW/HTTP
26
+ Classifier: Topic :: Internet
27
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
28
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
+ Classifier: Topic :: Software Development :: Libraries
30
+ Classifier: Topic :: Software Development
31
+ Classifier: Typing :: Typed
32
+ License-File: LICENSE
33
+ Requires-Dist: alembic==1.16.1
34
+ Requires-Dist: anyio>=3.7.0
35
+ Requires-Dist: click==8.*
36
+ Requires-Dist: deepmerge==2.0
37
+ Requires-Dist: deprecated>=1.2.18
38
+ Requires-Dist: fastapi~=0.115.2
39
+ Requires-Dist: fastapi-etag==0.4.0
40
+ Requires-Dist: itsdangerous>=2.2.0
41
+ Requires-Dist: jinja2==3.1.6
42
+ Requires-Dist: more-itertools~=10.7.0
43
+ Requires-Dist: nwa-stdlib~=1.9.0
44
+ Requires-Dist: oauth2-lib~=2.4.0
45
+ Requires-Dist: orjson==3.10.18
46
+ Requires-Dist: prometheus-client==0.22.1
47
+ Requires-Dist: psycopg2-binary==2.9.10
48
+ Requires-Dist: pydantic-forms>=1.4.0,<=2.1.0
49
+ Requires-Dist: pydantic-settings~=2.9.1
50
+ Requires-Dist: pydantic[email]~=2.8.2
51
+ Requires-Dist: python-dateutil==2.8.2
52
+ Requires-Dist: python-rapidjson>=1.18,<1.21
53
+ Requires-Dist: pytz==2025.2
54
+ Requires-Dist: redis==5.1.1
55
+ Requires-Dist: schedule==1.1.0
56
+ Requires-Dist: semver==3.0.4
57
+ Requires-Dist: sentry-sdk[fastapi]~=2.29.1
58
+ Requires-Dist: sqlalchemy==2.0.41
59
+ Requires-Dist: sqlalchemy-utils==0.41.2
60
+ Requires-Dist: strawberry-graphql>=0.246.2
61
+ Requires-Dist: structlog>=25.4.0
62
+ Requires-Dist: tabulate==0.9.0
63
+ Requires-Dist: typer==0.15.4
64
+ Requires-Dist: uvicorn[standard]~=0.34.0
65
+ Requires-Dist: celery~=5.5.1 ; extra == "celery"
66
+ Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
67
+ Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
68
+ Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
69
+ Provides-Extra: celery
70
+
71
+ # Orchestrator-Core
72
+
73
+ [![Downloads](https://pepy.tech/badge/orchestrator-core/month)](https://pepy.tech/project/orchestrator-core)
74
+ [![codecov](https://codecov.io/gh/workfloworchestrator/orchestrator-core/branch/main/graph/badge.svg?token=5ANQFI2DHS)](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
75
+ [![pypi_version](https://img.shields.io/pypi/v/orchestrator-core?color=%2334D058&label=pypi%20package)](https://pypi.org/project/orchestrator-core)
76
+ [![Supported python versions](https://img.shields.io/pypi/pyversions/orchestrator-core.svg?color=%2334D058)](https://pypi.org/project/orchestrator-core)
77
+ ![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%2FKNgF6gE8)
78
+
79
+ <p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
80
+
81
+ ## Documentation
82
+
83
+ The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).
84
+
85
+ ## Installation (quick start)
86
+
87
+ Simplified steps to install and use the orchestrator-core.
88
+ For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.
89
+
90
+ ### Step 1 - Install the package
91
+
92
+ Create a virtualenv and install the orchestrator-core.
93
+
94
+ ```shell
95
+ python -m venv .venv
96
+ source .venv/bin/activate
97
+ pip install orchestrator-core
98
+ ```
99
+
100
+ ### Step 2 - Setup the database
101
+
102
+ Create a postgres database:
103
+
104
+ ```shell
105
+ createuser -sP nwa
106
+ createdb orchestrator-core -O nwa # set password to 'nwa'
107
+ ```
108
+
109
+ Configure the database URI in your local environment:
110
+
111
+ ```
112
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
113
+ ```
114
+
115
+ ### Step 3 - Create main.py
116
+
117
+ Create a `main.py` file.
118
+
119
+ ```python
120
+ from orchestrator import OrchestratorCore
121
+ from orchestrator.cli.main import app as core_cli
122
+ from orchestrator.settings import AppSettings
123
+
124
+ app = OrchestratorCore(base_settings=AppSettings())
125
+
126
+ if __name__ == "__main__":
127
+ core_cli()
128
+ ```
129
+
130
+ ### Step 4 - Run the database migrations
131
+
132
+ Initialize the migration environment and database tables.
133
+
134
+ ```shell
135
+ python main.py db init
136
+ python main.py db upgrade heads
137
+ ```
138
+
139
+ ### Step 5 - Run the app
140
+
141
+ ```shell
142
+ export OAUTH2_ACTIVE=False
143
+ uvicorn --reload --host 127.0.0.1 --port 8080 main:app
144
+ ```
145
+
146
+ Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
147
+
148
+ ## Contributing
149
+
150
+ We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage dependencies.
151
+
152
+ To get started, follow these steps:
153
+
154
+ ```shell
155
+ # in your postgres database
156
+ createdb orchestrator-core-test -O nwa # set password to 'nwa'
157
+
158
+ # on your local machine
159
+ git clone https://github.com/workfloworchestrator/orchestrator-core
160
+ cd orchestrator-core
161
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core-test
162
+ uv sync --all-extras --all-groups
163
+ uv run pytest
164
+ ```
165
+
166
+ For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).
167
+
@@ -0,0 +1,96 @@
1
+ # Orchestrator-Core
2
+
3
+ [![Downloads](https://pepy.tech/badge/orchestrator-core/month)](https://pepy.tech/project/orchestrator-core)
4
+ [![codecov](https://codecov.io/gh/workfloworchestrator/orchestrator-core/branch/main/graph/badge.svg?token=5ANQFI2DHS)](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
5
+ [![pypi_version](https://img.shields.io/pypi/v/orchestrator-core?color=%2334D058&label=pypi%20package)](https://pypi.org/project/orchestrator-core)
6
+ [![Supported python versions](https://img.shields.io/pypi/pyversions/orchestrator-core.svg?color=%2334D058)](https://pypi.org/project/orchestrator-core)
7
+ ![Discord](https://img.shields.io/discord/1295834294270558280?style=flat&logo=discord&label=discord&link=https%3A%2F%2Fdiscord.gg%2FKNgF6gE8)
8
+
9
+ <p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
10
+
11
+ ## Documentation
12
+
13
+ The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).
14
+
15
+ ## Installation (quick start)
16
+
17
+ Simplified steps to install and use the orchestrator-core.
18
+ For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.
19
+
20
+ ### Step 1 - Install the package
21
+
22
+ Create a virtualenv and install the orchestrator-core.
23
+
24
+ ```shell
25
+ python -m venv .venv
26
+ source .venv/bin/activate
27
+ pip install orchestrator-core
28
+ ```
29
+
30
+ ### Step 2 - Setup the database
31
+
32
+ Create a postgres database:
33
+
34
+ ```shell
35
+ createuser -sP nwa
36
+ createdb orchestrator-core -O nwa # set password to 'nwa'
37
+ ```
38
+
39
+ Configure the database URI in your local environment:
40
+
41
+ ```
42
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
43
+ ```
44
+
45
+ ### Step 3 - Create main.py
46
+
47
+ Create a `main.py` file.
48
+
49
+ ```python
50
+ from orchestrator import OrchestratorCore
51
+ from orchestrator.cli.main import app as core_cli
52
+ from orchestrator.settings import AppSettings
53
+
54
+ app = OrchestratorCore(base_settings=AppSettings())
55
+
56
+ if __name__ == "__main__":
57
+ core_cli()
58
+ ```
59
+
60
+ ### Step 4 - Run the database migrations
61
+
62
+ Initialize the migration environment and database tables.
63
+
64
+ ```shell
65
+ python main.py db init
66
+ python main.py db upgrade heads
67
+ ```
68
+
69
+ ### Step 5 - Run the app
70
+
71
+ ```shell
72
+ export OAUTH2_ACTIVE=False
73
+ uvicorn --reload --host 127.0.0.1 --port 8080 main:app
74
+ ```
75
+
76
+ Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
77
+
78
+ ## Contributing
79
+
80
+ We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage dependencies.
81
+
82
+ To get started, follow these steps:
83
+
84
+ ```shell
85
+ # in your postgres database
86
+ createdb orchestrator-core-test -O nwa # set password to 'nwa'
87
+
88
+ # on your local machine
89
+ git clone https://github.com/workfloworchestrator/orchestrator-core
90
+ cd orchestrator-core
91
+ export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core-test
92
+ uv sync --all-extras --all-groups
93
+ uv run pytest
94
+ ```
95
+
96
+ For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "4.1.0rc1"
16
+ __version__ = "4.2.0"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -25,7 +25,7 @@ from fastapi.param_functions import Body, Depends, Header
25
25
  from fastapi.routing import APIRouter
26
26
  from fastapi.websockets import WebSocket
27
27
  from fastapi_etag.dependency import CacheHit
28
- from more_itertools import chunked
28
+ from more_itertools import chunked, last
29
29
  from sentry_sdk.tracing import trace
30
30
  from sqlalchemy import CompoundSelect, Select, select
31
31
  from sqlalchemy.orm import defer, joinedload
@@ -56,6 +56,7 @@ from orchestrator.services.processes import (
56
56
  )
57
57
  from orchestrator.services.settings import get_engine_settings
58
58
  from orchestrator.settings import app_settings
59
+ from orchestrator.utils.auth import Authorizer
59
60
  from orchestrator.utils.enrich_process import enrich_process
60
61
  from orchestrator.websocket import (
61
62
  WS_CHANNELS,
@@ -63,7 +64,7 @@ from orchestrator.websocket import (
63
64
  broadcast_process_update_to_websocket,
64
65
  websocket_manager,
65
66
  )
66
- from orchestrator.workflow import ProcessStatus
67
+ from orchestrator.workflow import ProcessStat, ProcessStatus, StepList, Workflow
67
68
  from pydantic_forms.types import JSON, State
68
69
 
69
70
  router = APIRouter()
@@ -86,6 +87,49 @@ def check_global_lock() -> None:
86
87
  )
87
88
 
88
89
 
90
+ def get_current_steps(pstat: ProcessStat) -> StepList:
91
+ """Extract past and current steps from the ProcessStat."""
92
+ remaining_steps = pstat.log
93
+ past_steps = pstat.workflow.steps[: -len(remaining_steps)]
94
+ return StepList(past_steps + [pstat.log[0]])
95
+
96
+
97
+ def get_auth_callbacks(steps: StepList, workflow: Workflow) -> tuple[Authorizer | None, Authorizer | None]:
98
+ """Iterate over workflow and prior steps to determine correct authorization callbacks for the current step.
99
+
100
+ It's safest to always iterate through the steps. We could track these callbacks statefully
101
+ as we progress through the workflow, but if we fail a step and the system restarts, the previous
102
+ callbacks will be lost if they're only available in the process state.
103
+
104
+ Priority:
105
+ - RESUME callback is explicit RESUME callback, else previous START/RESUME callback
106
+ - RETRY callback is explicit RETRY, else explicit RESUME, else previous RETRY
107
+ """
108
+ # Default to workflow start callbacks
109
+ auth_resume = workflow.authorize_callback
110
+ # auth_retry defaults to the workflow start callback if not otherwise specified.
111
+ # A workflow SHOULD have both callbacks set to not-None. This enforces the correct default regardless.
112
+ auth_retry = workflow.retry_auth_callback or auth_resume # type: ignore[unreachable, truthy-function]
113
+
114
+ # Choose the most recently established value for resume.
115
+ auth_resume = last(filter(None, (step.resume_auth_callback for step in steps)), auth_resume)
116
+ # Choose the most recently established value for retry, unless there is a more recent value for resume.
117
+ auth_retry = last(
118
+ filter(None, (step.retry_auth_callback or step.resume_auth_callback for step in steps)), auth_retry
119
+ )
120
+ return auth_resume, auth_retry
121
+
122
+
123
+ def can_be_resumed(status: ProcessStatus) -> bool:
124
+ return status in (
125
+ ProcessStatus.SUSPENDED, # Can be resumed
126
+ ProcessStatus.WAITING, # Can be retried
127
+ ProcessStatus.FAILED, # Can be retried
128
+ ProcessStatus.API_UNAVAILABLE, # subtype of FAILED
129
+ ProcessStatus.INCONSISTENT_DATA, # subtype of FAILED
130
+ )
131
+
132
+
89
133
  def resolve_user_name(
90
134
  *,
91
135
  reporter: Reporter | None,
@@ -115,6 +159,9 @@ def delete(process_id: UUID) -> None:
115
159
  if not process:
116
160
  raise_status(HTTPStatus.NOT_FOUND)
117
161
 
162
+ if not process.is_task:
163
+ raise_status(HTTPStatus.BAD_REQUEST)
164
+
118
165
  db.session.delete(db.session.get(ProcessTable, process_id))
119
166
  db.session.commit()
120
167
 
@@ -150,18 +197,25 @@ def new_process(
150
197
  dependencies=[Depends(check_global_lock, use_cache=False)],
151
198
  )
152
199
  def resume_process_endpoint(
153
- process_id: UUID, request: Request, json_data: JSON = Body(...), user: str = Depends(user_name)
200
+ process_id: UUID,
201
+ request: Request,
202
+ json_data: JSON = Body(...),
203
+ user: str = Depends(user_name),
204
+ user_model: OIDCUserModel | None = Depends(authenticate),
154
205
  ) -> None:
155
206
  process = _get_process(process_id)
156
207
 
157
- if process.last_status == ProcessStatus.COMPLETED:
158
- raise_status(HTTPStatus.CONFLICT, "Resuming a completed workflow is not possible")
159
-
160
- if process.last_status == ProcessStatus.RUNNING:
161
- raise_status(HTTPStatus.CONFLICT, "Resuming a running workflow is not possible")
208
+ if not can_be_resumed(process.last_status):
209
+ raise_status(HTTPStatus.CONFLICT, f"Resuming a {process.last_status.lower()} workflow is not possible")
162
210
 
163
- if process.last_status == ProcessStatus.RESUMED:
164
- raise_status(HTTPStatus.CONFLICT, "Resuming a resumed workflow is not possible")
211
+ pstat = load_process(process)
212
+ auth_resume, auth_retry = get_auth_callbacks(get_current_steps(pstat), pstat.workflow)
213
+ if process.last_status == ProcessStatus.SUSPENDED:
214
+ if auth_resume is not None and not auth_resume(user_model):
215
+ raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to resume step")
216
+ elif process.last_status in (ProcessStatus.FAILED, ProcessStatus.WAITING):
217
+ if auth_retry is not None and not auth_retry(user_model):
218
+ raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to retry step")
165
219
 
166
220
  broadcast_invalidate_status_counts()
167
221
  broadcast_func = api_broadcast_process_data(request)
@@ -220,7 +274,7 @@ def update_progress_on_awaiting_process_endpoint(
220
274
  @router.put(
221
275
  "/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
222
276
  )
223
- async def resume_all_processess_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
277
+ async def resume_all_processes_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
224
278
  """Retry all task processes in status Failed, Waiting, API Unavailable or Inconsistent Data.
225
279
 
226
280
  The retry is started in the background, returning status 200 and number of processes in message.
@@ -47,10 +47,12 @@ from orchestrator.services.subscriptions import (
47
47
  subscription_workflows,
48
48
  )
49
49
  from orchestrator.settings import app_settings
50
+ from orchestrator.targets import Target
50
51
  from orchestrator.types import SubscriptionLifecycle
51
52
  from orchestrator.utils.deprecation_logger import deprecated_endpoint
52
53
  from orchestrator.utils.get_subscription_dict import get_subscription_dict
53
54
  from orchestrator.websocket import sync_invalidate_subscription_cache
55
+ from orchestrator.workflows import get_workflow
54
56
 
55
57
  router = APIRouter()
56
58
 
@@ -100,6 +102,25 @@ def _filter_statuses(filter_statuses: str | None = None) -> list[str]:
100
102
  return statuses
101
103
 
102
104
 
105
+ def _authorized_subscription_workflows(
106
+ subscription: SubscriptionTable, current_user: OIDCUserModel | None
107
+ ) -> dict[str, list[dict[str, list[Any] | str]]]:
108
+ subscription_workflows_dict = subscription_workflows(subscription)
109
+
110
+ for workflow_target in Target.values():
111
+ for workflow_dict in subscription_workflows_dict[workflow_target.lower()]:
112
+ workflow = get_workflow(workflow_dict["name"])
113
+ if not workflow:
114
+ continue
115
+ if (
116
+ not workflow.authorize_callback(current_user) # The current user isn't allowed to run this workflow
117
+ and "reason" not in workflow_dict # and there isn't already a reason why this workflow cannot run
118
+ ):
119
+ workflow_dict["reason"] = "subscription.insufficient_workflow_permissions"
120
+
121
+ return subscription_workflows_dict
122
+
123
+
103
124
  @router.get(
104
125
  "/domain-model/{subscription_id}",
105
126
  response_model=SubscriptionDomainModelSchema | None,
@@ -169,7 +190,9 @@ def subscriptions_search(
169
190
  description="This endpoint is deprecated and will be removed in a future release. Please use the GraphQL query",
170
191
  dependencies=[Depends(deprecated_endpoint)],
171
192
  )
172
- def subscription_workflows_by_id(subscription_id: UUID) -> dict[str, list[dict[str, list[Any] | str]]]:
193
+ def subscription_workflows_by_id(
194
+ subscription_id: UUID, current_user: OIDCUserModel | None = Depends(authenticate)
195
+ ) -> dict[str, list[dict[str, list[Any] | str]]]:
173
196
  subscription = db.session.get(
174
197
  SubscriptionTable,
175
198
  subscription_id,
@@ -181,7 +204,7 @@ def subscription_workflows_by_id(subscription_id: UUID) -> dict[str, list[dict[s
181
204
  if not subscription:
182
205
  raise_status(HTTPStatus.NOT_FOUND)
183
206
 
184
- return subscription_workflows(subscription)
207
+ return _authorized_subscription_workflows(subscription, current_user)
185
208
 
186
209
 
187
210
  @router.put("/{subscription_id}/set_in_sync", response_model=None, status_code=HTTPStatus.OK)
@@ -256,6 +256,9 @@ def migrate_domain_models(
256
256
  test: bool = typer.Option(False, help="Optional boolean if you don't want to generate a migration file"),
257
257
  inputs: str = typer.Option("{}", help="Stringified dict to prefill inputs"),
258
258
  updates: str = typer.Option("{}", help="Stringified dict to map updates instead of using inputs"),
259
+ confirm_warnings: bool = typer.Option(
260
+ False, help="Optional boolean if you want to accept all warning inputs, fully knowing things can go wrong"
261
+ ),
259
262
  ) -> tuple[list[str], list[str]] | None:
260
263
  """Create migration file based on SubscriptionModel.diff_product_in_database. BACKUP DATABASE BEFORE USING THE MIGRATION!.
261
264
 
@@ -282,6 +285,8 @@ def migrate_domain_models(
282
285
  - `updates = { "resource_types": { "old_resource_type_name": "new_resource_type_name" } }`
283
286
  - renaming a resource type to existing resource type: `updates = { "resource_types": { "old_resource_type_name": "new_resource_type_name" } }`
284
287
 
288
+ confirm_warnings: Optional boolean if you want to accept all warning inputs, fully knowing things can go wrong.
289
+
285
290
  Returns None unless `--test` is used, in which case it returns:
286
291
  - tuple:
287
292
  - list of upgrade SQL statements in string format.
@@ -304,7 +309,9 @@ def migrate_domain_models(
304
309
  resource_types=updates_dict.get("resource_types", {}),
305
310
  block_resource_types=updates_dict.get("block_resource_types", {}),
306
311
  )
307
- sql_upgrade_stmts, sql_downgrade_stmts = create_domain_models_migration_sql(inputs_dict, updates_class, bool(test))
312
+ sql_upgrade_stmts, sql_downgrade_stmts = create_domain_models_migration_sql(
313
+ inputs_dict, updates_class, test, confirm_warnings
314
+ )
308
315
 
309
316
  if test:
310
317
  return sql_upgrade_stmts, sql_downgrade_stmts
@@ -0,0 +1,97 @@
1
+ from collections.abc import Iterable
2
+ from itertools import groupby
3
+
4
+ import structlog
5
+ import typer
6
+ from more_itertools import first
7
+ from sqlalchemy.dialects import postgresql
8
+ from sqlalchemy.sql.dml import UpdateBase
9
+
10
+ from orchestrator.cli.domain_gen_helpers.types import BlockRelationDict
11
+ from orchestrator.cli.helpers.input_helpers import _prompt_user_menu
12
+ from orchestrator.cli.helpers.print_helpers import noqa_print
13
+ from orchestrator.domain.base import ProductBlockModel, SubscriptionModel
14
+
15
+ logger = structlog.get_logger(__name__)
16
+
17
+
18
+ def sql_compile(sql: UpdateBase) -> str:
19
+ sql_string = str(sql.compile(dialect=postgresql.dialect(), compile_kwargs={"literal_binds": True})) # type: ignore[no-untyped-call]
20
+ sql_string = sql_string.replace("\n", "")
21
+ logger.debug("generated SQL", sql_string=sql_string)
22
+ return sql_string
23
+
24
+
25
+ def generic_mapper(prop_name: str, model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
26
+ model_by_resource = [
27
+ (prop_name_value, model_name)
28
+ for model_name, diff in model_diffs.items()
29
+ for prop_name_value in diff.get(prop_name, [])
30
+ ]
31
+ grouped = groupby(model_by_resource, lambda x: x[0])
32
+ return {k: {val[1] for val in v} for k, v in grouped}
33
+
34
+
35
+ def map_create_fixed_inputs(model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
36
+ return generic_mapper("missing_fixed_inputs_in_db", model_diffs)
37
+
38
+
39
+ def map_delete_fixed_inputs(model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
40
+ return generic_mapper("missing_fixed_inputs_in_model", model_diffs)
41
+
42
+
43
+ def map_create_resource_type_relations(model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
44
+ return generic_mapper("missing_resource_types_in_db", model_diffs)
45
+
46
+
47
+ def map_delete_resource_type_relations(model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
48
+ return generic_mapper("missing_resource_types_in_model", model_diffs)
49
+
50
+
51
+ def map_create_product_to_product_block_relations(model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
52
+ return generic_mapper("missing_product_blocks_in_db", model_diffs)
53
+
54
+
55
+ def format_block_relation_to_dict(
56
+ model_name: str,
57
+ block_to_find_in_props: str,
58
+ models: dict[str, type[SubscriptionModel]] | dict[str, type[ProductBlockModel]],
59
+ confirm_warnings: bool,
60
+ ) -> BlockRelationDict:
61
+ model = models[model_name]
62
+ block_props = model._get_depends_on_product_block_types()
63
+ props = {k for k, v in block_props.items() if v.name == block_to_find_in_props} # type: ignore
64
+
65
+ if len(props) > 1 and not confirm_warnings:
66
+ noqa_print("WARNING: Relating a Product Block multiple times is not supported by this migrator!")
67
+ noqa_print(
68
+ "You will need to create your own migration to create a Product Block Instance for each attribute that is related"
69
+ )
70
+ noqa_print(f"Product Block '{block_to_find_in_props}' has been related multiple times to '{model_name}'")
71
+ noqa_print(f"Attributes the block ('{block_to_find_in_props}') has been related with: {', '.join(props)}")
72
+ noqa_print(f"The relation will only be added to the first attribute ('{first(props)}') want to continue?")
73
+
74
+ if _prompt_user_menu([("yes", "yes"), ("no", "no")]) == "no":
75
+ typer.echo("Aborted.")
76
+ raise typer.Exit(code=1)
77
+
78
+ return BlockRelationDict(name=model_name, attribute_name=first(props))
79
+
80
+
81
+ def map_create_product_block_relations(
82
+ model_diffs: dict[str, dict[str, set[str]]],
83
+ models: dict[str, type[SubscriptionModel]] | dict[str, type[ProductBlockModel]],
84
+ confirm_warnings: bool,
85
+ ) -> dict[str, list[BlockRelationDict]]:
86
+ data = generic_mapper("missing_product_blocks_in_db", model_diffs)
87
+ return {
88
+ k: [format_block_relation_to_dict(b, k, models, confirm_warnings) for b in blocks] for k, blocks in data.items()
89
+ }
90
+
91
+
92
+ def map_delete_product_block_relations(model_diffs: dict[str, dict[str, set[str]]]) -> dict[str, set[str]]:
93
+ return generic_mapper("missing_product_blocks_in_model", model_diffs)
94
+
95
+
96
+ def get_product_block_names(pbs: list[type[ProductBlockModel]]) -> Iterable[str]:
97
+ return filter(None, (pb.name for pb in pbs))