orchestrator-core 4.1.0rc2__tar.gz → 4.2.0rc2__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.0rc2/PKG-INFO +167 -0
  2. orchestrator_core-4.2.0rc2/README.md +96 -0
  3. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/__init__.py +1 -1
  4. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/processes.py +6 -2
  5. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/subscriptions.py +25 -2
  6. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/database.py +8 -1
  7. orchestrator_core-4.2.0rc2/orchestrator/cli/domain_gen_helpers/helpers.py +97 -0
  8. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +35 -15
  9. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +5 -5
  10. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/domain_gen_helpers/types.py +7 -1
  11. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/create_product.j2 +1 -2
  12. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/migrate_domain_models.py +16 -5
  13. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/models.py +6 -3
  14. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/process.py +21 -2
  15. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/product.py +8 -9
  16. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/workflow.py +9 -0
  17. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/types.py +7 -1
  18. orchestrator_core-4.2.0rc2/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +65 -0
  19. orchestrator_core-4.2.0rc2/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +30 -0
  20. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/process.py +5 -1
  21. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/processes.py +11 -2
  22. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/enrich_process.py +4 -2
  23. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/errors.py +2 -1
  24. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflow.py +7 -2
  25. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/modify_note.py +1 -1
  26. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/steps.py +14 -8
  27. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/utils.py +3 -3
  28. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/pyproject.toml +91 -92
  29. orchestrator_core-4.1.0rc2/.bumpversion.cfg +0 -12
  30. orchestrator_core-4.1.0rc2/.coveragerc +0 -2
  31. orchestrator_core-4.1.0rc2/.github/ISSUE_TEMPLATE/bug-report.yml +0 -52
  32. orchestrator_core-4.1.0rc2/.github/ISSUE_TEMPLATE/feature-request.yml +0 -32
  33. orchestrator_core-4.1.0rc2/.github/dependabot.yml +0 -11
  34. orchestrator_core-4.1.0rc2/.github/workflows/README.md +0 -65
  35. orchestrator_core-4.1.0rc2/.github/workflows/build-push-container.yml +0 -58
  36. orchestrator_core-4.1.0rc2/.github/workflows/changelog.yml +0 -13
  37. orchestrator_core-4.1.0rc2/.github/workflows/codeql-analysis.yml +0 -68
  38. orchestrator_core-4.1.0rc2/.github/workflows/gh-pages.yml +0 -17
  39. orchestrator_core-4.1.0rc2/.github/workflows/issues.yml +0 -13
  40. orchestrator_core-4.1.0rc2/.github/workflows/publish-package.yml +0 -25
  41. orchestrator_core-4.1.0rc2/.github/workflows/run-codspeed-tests.yml +0 -71
  42. orchestrator_core-4.1.0rc2/.github/workflows/run-linting-tests.yml +0 -36
  43. orchestrator_core-4.1.0rc2/.github/workflows/run-unit-tests.yml +0 -68
  44. orchestrator_core-4.1.0rc2/.github/workflows/scheduled-build.yml +0 -42
  45. orchestrator_core-4.1.0rc2/.gitignore +0 -135
  46. orchestrator_core-4.1.0rc2/.pre-commit-config.yaml +0 -86
  47. orchestrator_core-4.1.0rc2/.stignore +0 -101
  48. orchestrator_core-4.1.0rc2/CHANGELOG.md +0 -481
  49. orchestrator_core-4.1.0rc2/Dockerfile +0 -24
  50. orchestrator_core-4.1.0rc2/NOTICE +0 -7
  51. orchestrator_core-4.1.0rc2/PKG-INFO +0 -118
  52. orchestrator_core-4.1.0rc2/README.md +0 -200
  53. orchestrator_core-4.1.0rc2/codecov.yml +0 -8
  54. orchestrator_core-4.1.0rc2/docs/architecture/application/domainmodels.md +0 -236
  55. orchestrator_core-4.1.0rc2/docs/architecture/application/forms-frontend.md +0 -231
  56. orchestrator_core-4.1.0rc2/docs/architecture/application/tasks.md +0 -169
  57. orchestrator_core-4.1.0rc2/docs/architecture/application/workflow.md +0 -295
  58. orchestrator_core-4.1.0rc2/docs/architecture/framework.md +0 -28
  59. orchestrator_core-4.1.0rc2/docs/architecture/img/base-orchestrator-setup.png +0 -0
  60. orchestrator_core-4.1.0rc2/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  61. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  62. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  63. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/orchestrator-ui.md +0 -265
  64. orchestrator_core-4.1.0rc2/docs/architecture/orchestration/philosophy.md +0 -16
  65. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/backfilling.md +0 -77
  66. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/context.md +0 -11
  67. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/imports.md +0 -90
  68. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/introduction.md +0 -13
  69. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/ip_static.md +0 -27
  70. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/ip_static.png +0 -0
  71. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_point_to_point.md +0 -21
  72. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  73. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_vpn.md +0 -15
  74. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_vpn.png +0 -0
  75. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/modelling.md +0 -22
  76. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/node.md +0 -20
  77. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/node.png +0 -0
  78. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/port.md +0 -20
  79. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/port.png +0 -0
  80. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/product_block_graph.md +0 -26
  81. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/product_block_graph.png +0 -0
  82. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/standards.md +0 -16
  83. orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/terminology.md +0 -17
  84. orchestrator_core-4.1.0rc2/docs/architecture/tldr.md +0 -40
  85. orchestrator_core-4.1.0rc2/docs/contributing/development.md +0 -109
  86. orchestrator_core-4.1.0rc2/docs/contributing/guidelines.md +0 -41
  87. orchestrator_core-4.1.0rc2/docs/contributing/testing.md +0 -278
  88. orchestrator_core-4.1.0rc2/docs/css/custom.css +0 -24
  89. orchestrator_core-4.1.0rc2/docs/css/style.css +0 -27
  90. orchestrator_core-4.1.0rc2/docs/css/termynal.css +0 -108
  91. orchestrator_core-4.1.0rc2/docs/getting-started/base.md +0 -99
  92. orchestrator_core-4.1.0rc2/docs/getting-started/docker.md +0 -23
  93. orchestrator_core-4.1.0rc2/docs/getting-started/orchestration-ui.md +0 -59
  94. orchestrator_core-4.1.0rc2/docs/getting-started/prepare-source-folder.md +0 -110
  95. orchestrator_core-4.1.0rc2/docs/getting-started/versions.md +0 -12
  96. orchestrator_core-4.1.0rc2/docs/img/WFO-Emblem-White.png +0 -0
  97. orchestrator_core-4.1.0rc2/docs/img/favicon.ico +0 -0
  98. orchestrator_core-4.1.0rc2/docs/index.md +0 -82
  99. orchestrator_core-4.1.0rc2/docs/js/custom.js +0 -105
  100. orchestrator_core-4.1.0rc2/docs/js/termynal.js +0 -264
  101. orchestrator_core-4.1.0rc2/docs/migration-guide/2.0.md +0 -331
  102. orchestrator_core-4.1.0rc2/docs/migration-guide/3.0.md +0 -14
  103. orchestrator_core-4.1.0rc2/docs/migration-guide/4.0.md +0 -73
  104. orchestrator_core-4.1.0rc2/docs/reference-docs/api.md +0 -6
  105. orchestrator_core-4.1.0rc2/docs/reference-docs/app/app.md +0 -26
  106. orchestrator_core-4.1.0rc2/docs/reference-docs/app/scaling.md +0 -250
  107. orchestrator_core-4.1.0rc2/docs/reference-docs/app/settings_overview.md +0 -89
  108. orchestrator_core-4.1.0rc2/docs/reference-docs/auth-backend-and-frontend.md +0 -595
  109. orchestrator_core-4.1.0rc2/docs/reference-docs/cli.md +0 -761
  110. orchestrator_core-4.1.0rc2/docs/reference-docs/database.md +0 -36
  111. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/generator.md +0 -3
  112. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/instantiating.md +0 -0
  113. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/model_attributes.md +0 -57
  114. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/overview.md +0 -4
  115. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/product_blocks.md +0 -44
  116. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/product_types.md +0 -56
  117. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/properties.md +0 -0
  118. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  119. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/type_casting.md +0 -0
  120. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/union_types.md +0 -0
  121. orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/validation.md +0 -0
  122. orchestrator_core-4.1.0rc2/docs/reference-docs/forms.md +0 -438
  123. orchestrator_core-4.1.0rc2/docs/reference-docs/graphql.md +0 -686
  124. orchestrator_core-4.1.0rc2/docs/reference-docs/metrics.md +0 -45
  125. orchestrator_core-4.1.0rc2/docs/reference-docs/python.md +0 -27
  126. orchestrator_core-4.1.0rc2/docs/reference-docs/search.md +0 -264
  127. orchestrator_core-4.1.0rc2/docs/reference-docs/search_overview.png +0 -0
  128. orchestrator_core-4.1.0rc2/docs/reference-docs/serialization.md +0 -0
  129. orchestrator_core-4.1.0rc2/docs/reference-docs/tasks.md +0 -0
  130. orchestrator_core-4.1.0rc2/docs/reference-docs/tests.md +0 -0
  131. orchestrator_core-4.1.0rc2/docs/reference-docs/tldr.md +0 -3
  132. orchestrator_core-4.1.0rc2/docs/reference-docs/websockets.md +0 -107
  133. orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/callbacks.md +0 -178
  134. orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/workflow-lifecycles.md +0 -9
  135. orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/workflow-steps.md +0 -28
  136. orchestrator_core-4.1.0rc2/docs/workshops/advanced/bootstrap.md +0 -168
  137. orchestrator_core-4.1.0rc2/docs/workshops/advanced/create-your-own.md +0 -9
  138. orchestrator_core-4.1.0rc2/docs/workshops/advanced/docker-installation.md +0 -89
  139. orchestrator_core-4.1.0rc2/docs/workshops/advanced/domain-models.md +0 -10
  140. orchestrator_core-4.1.0rc2/docs/workshops/advanced/execute-workflows.md +0 -46
  141. orchestrator_core-4.1.0rc2/docs/workshops/advanced/generator.md +0 -169
  142. orchestrator_core-4.1.0rc2/docs/workshops/advanced/l2_point_to_point.png +0 -0
  143. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-create.md +0 -2
  144. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-modify.md +0 -2
  145. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-terminate.md +0 -2
  146. orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-validate.md +0 -2
  147. orchestrator_core-4.1.0rc2/docs/workshops/advanced/overview.md +0 -86
  148. orchestrator_core-4.1.0rc2/docs/workshops/advanced/scenario.md +0 -19
  149. orchestrator_core-4.1.0rc2/docs/workshops/advanced/workflow-basics.md +0 -3
  150. orchestrator_core-4.1.0rc2/docs/workshops/advanced/workflow-introduction.md +0 -36
  151. orchestrator_core-4.1.0rc2/docs/workshops/beginner/create-user-group.md +0 -132
  152. orchestrator_core-4.1.0rc2/docs/workshops/beginner/create-user.md +0 -137
  153. orchestrator_core-4.1.0rc2/docs/workshops/beginner/database-migration.md +0 -192
  154. orchestrator_core-4.1.0rc2/docs/workshops/beginner/debian.md +0 -145
  155. orchestrator_core-4.1.0rc2/docs/workshops/beginner/docker.md +0 -78
  156. orchestrator_core-4.1.0rc2/docs/workshops/beginner/domain-models.md +0 -187
  157. orchestrator_core-4.1.0rc2/docs/workshops/beginner/explore.md +0 -73
  158. orchestrator_core-4.1.0rc2/docs/workshops/beginner/input-forms.md +0 -111
  159. orchestrator_core-4.1.0rc2/docs/workshops/beginner/macos.md +0 -146
  160. orchestrator_core-4.1.0rc2/docs/workshops/beginner/modify-user-group.md +0 -79
  161. orchestrator_core-4.1.0rc2/docs/workshops/beginner/modify-user.md +0 -61
  162. orchestrator_core-4.1.0rc2/docs/workshops/beginner/register-workflows.md +0 -113
  163. orchestrator_core-4.1.0rc2/docs/workshops/beginner/start-applications.md +0 -40
  164. orchestrator_core-4.1.0rc2/docs/workshops/beginner/terminate-user-group.md +0 -79
  165. orchestrator_core-4.1.0rc2/docs/workshops/beginner/terminate-user.md +0 -44
  166. orchestrator_core-4.1.0rc2/docs/workshops/beginner/workflow-introduction.md +0 -78
  167. orchestrator_core-4.1.0rc2/docs/workshops/beginner/workshop-overview.md +0 -92
  168. orchestrator_core-4.1.0rc2/docs/workshops/images/Software-topology.drawio.png +0 -0
  169. orchestrator_core-4.1.0rc2/docs/workshops/images/clab_topology.png +0 -0
  170. orchestrator_core-4.1.0rc2/docs/workshops/images/metadata_products.png +0 -0
  171. orchestrator_core-4.1.0rc2/docs/workshops/images/netbox_devices_active.png +0 -0
  172. orchestrator_core-4.1.0rc2/docs/workshops/images/subscriptions.png +0 -0
  173. orchestrator_core-4.1.0rc2/docs/workshops/images/topology.drawio.png +0 -0
  174. orchestrator_core-4.1.0rc2/includes/abbreviations.md +0 -6
  175. orchestrator_core-4.1.0rc2/mkdocs.yml +0 -248
  176. orchestrator_core-4.1.0rc2/nitpick-style.toml +0 -2
  177. orchestrator_core-4.1.0rc2/orchestrator/cli/domain_gen_helpers/helpers.py +0 -55
  178. orchestrator_core-4.1.0rc2/setup.cfg +0 -69
  179. orchestrator_core-4.1.0rc2/setup.py +0 -20
  180. orchestrator_core-4.1.0rc2/test/__init__.py +0 -0
  181. orchestrator_core-4.1.0rc2/test/acceptance_tests/__init__.py +0 -0
  182. orchestrator_core-4.1.0rc2/test/acceptance_tests/conftest.py +0 -110
  183. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  184. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  185. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -61
  186. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -40
  187. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  188. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -46
  189. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  190. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -33
  191. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  192. orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -84
  193. orchestrator_core-4.1.0rc2/test/acceptance_tests/test_test_product.py +0 -23
  194. orchestrator_core-4.1.0rc2/test/unit_tests/__init__.py +0 -0
  195. orchestrator_core-4.1.0rc2/test/unit_tests/api/__init__.py +0 -0
  196. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_health.py +0 -30
  197. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_helpers.py +0 -85
  198. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_models.py +0 -45
  199. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_processes.py +0 -756
  200. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_processes_ws.py +0 -334
  201. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_product_blocks.py +0 -58
  202. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_products.py +0 -202
  203. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_resource_types.py +0 -56
  204. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_settings.py +0 -98
  205. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -145
  206. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_subscriptions.py +0 -846
  207. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_workflows.py +0 -57
  208. orchestrator_core-4.1.0rc2/test/unit_tests/api/test_ws.py +0 -103
  209. orchestrator_core-4.1.0rc2/test/unit_tests/cli/__init__.py +0 -0
  210. orchestrator_core-4.1.0rc2/test/unit_tests/cli/conftest.py +0 -33
  211. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/alembic.ini +0 -45
  212. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/main.py +0 -7
  213. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/env.py +0 -89
  214. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -3
  215. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -23
  216. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -21
  217. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -93
  218. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -135
  219. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -105
  220. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/__init__.py +0 -26
  221. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  222. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -61
  223. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -30
  224. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -26
  225. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -21
  226. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  227. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -28
  228. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -16
  229. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -16
  230. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -53
  231. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -53
  232. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -53
  233. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -83
  234. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -70
  235. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -43
  236. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -35
  237. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -32
  238. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -33
  239. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -26
  240. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -16
  241. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -32
  242. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -33
  243. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -26
  244. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -16
  245. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -16
  246. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -14
  247. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -110
  248. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -98
  249. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -15
  250. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -46
  251. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -29
  252. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -79
  253. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -73
  254. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -1
  255. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -39
  256. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -78
  257. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -71
  258. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -1
  259. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -39
  260. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/shared.py +0 -36
  261. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate.sh +0 -25
  262. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -20
  263. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -24
  264. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config1.yaml +0 -87
  265. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config2.yaml +0 -29
  266. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config3.yaml +0 -26
  267. orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config4.yaml +0 -32
  268. orchestrator_core-4.1.0rc2/test/unit_tests/cli/generator/__init__.py +0 -0
  269. orchestrator_core-4.1.0rc2/test/unit_tests/cli/generator/test_enums.py +0 -27
  270. orchestrator_core-4.1.0rc2/test/unit_tests/cli/helpers.py +0 -19
  271. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_cli_generate.py +0 -68
  272. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_config_validation.py +0 -20
  273. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_generate_code.py +0 -152
  274. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -764
  275. orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -728
  276. orchestrator_core-4.1.0rc2/test/unit_tests/config.py +0 -12
  277. orchestrator_core-4.1.0rc2/test/unit_tests/conftest.py +0 -805
  278. orchestrator_core-4.1.0rc2/test/unit_tests/db/__init__.py +0 -0
  279. orchestrator_core-4.1.0rc2/test/unit_tests/db/test_listeners.py +0 -23
  280. orchestrator_core-4.1.0rc2/test/unit_tests/db/test_migration_does_column_exist.py +0 -10
  281. orchestrator_core-4.1.0rc2/test/unit_tests/domain/__init__.py +0 -0
  282. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base.py +0 -1301
  283. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_multiple.py +0 -226
  284. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_performance.py +0 -160
  285. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_serializable_property.py +0 -170
  286. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_with_list_union.py +0 -189
  287. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_with_union.py +0 -108
  288. orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_lifecycle.py +0 -49
  289. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/__init__.py +0 -88
  290. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/processes.py +0 -180
  291. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/__init__.py +0 -0
  292. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  293. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -67
  294. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -84
  295. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -55
  296. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -64
  297. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -59
  298. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -35
  299. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -32
  300. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  301. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -64
  302. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -52
  303. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -101
  304. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -95
  305. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -65
  306. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -82
  307. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -57
  308. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -57
  309. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -45
  310. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -41
  311. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -300
  312. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/resource_types.py +0 -28
  313. orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/workflows.py +0 -22
  314. orchestrator_core-4.1.0rc2/test/unit_tests/forms/__init__.py +0 -0
  315. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_customer_contact_list.py +0 -140
  316. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_customer_id.py +0 -17
  317. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_display_subscription.py +0 -77
  318. orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_generic_validators.py +0 -121
  319. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/__init__.py +0 -0
  320. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/conftest.py +0 -55
  321. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/extensions/__init__.py +0 -0
  322. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/extensions/test_stats.py +0 -30
  323. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/helpers.py +0 -17
  324. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/test_customer_description.py +0 -296
  325. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/test_start_process.py +0 -86
  326. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_customer.py +0 -69
  327. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_process.py +0 -42
  328. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_processes.py +0 -679
  329. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_product.py +0 -350
  330. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_product_blocks.py +0 -317
  331. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_resource_types.py +0 -174
  332. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_settings.py +0 -166
  333. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -74
  334. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscription.py +0 -105
  335. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscription_relations.py +0 -617
  336. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscriptions.py +0 -1581
  337. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_version.py +0 -21
  338. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_workflows.py +0 -234
  339. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/__init__.py +0 -0
  340. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/fixtures.py +0 -157
  341. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_autoregistration.py +0 -12
  342. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -55
  343. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -49
  344. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -207
  345. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -95
  346. orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_override_class.py +0 -290
  347. orchestrator_core-4.1.0rc2/test/unit_tests/helpers.py +0 -32
  348. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/__init__.py +0 -0
  349. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/conftest.py +0 -27
  350. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_engine_metrics.py +0 -18
  351. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_process_metrics.py +0 -27
  352. orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_subscription_metrics.py +0 -60
  353. orchestrator_core-4.1.0rc2/test/unit_tests/migrations/__init__.py +0 -0
  354. orchestrator_core-4.1.0rc2/test/unit_tests/migrations/test_cascade_constraint.py +0 -55
  355. orchestrator_core-4.1.0rc2/test/unit_tests/schedules/__init__.py +0 -0
  356. orchestrator_core-4.1.0rc2/test/unit_tests/schedules/test_scheduling.py +0 -26
  357. orchestrator_core-4.1.0rc2/test/unit_tests/services/__init__.py +0 -0
  358. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_expose_settings.py +0 -35
  359. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_input_state.py +0 -62
  360. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_processes.py +0 -927
  361. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_products.py +0 -39
  362. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_subscription_relations.py +0 -190
  363. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_subscriptions.py +0 -160
  364. orchestrator_core-4.1.0rc2/test/unit_tests/services/test_translations.py +0 -61
  365. orchestrator_core-4.1.0rc2/test/unit_tests/test_db.py +0 -183
  366. orchestrator_core-4.1.0rc2/test/unit_tests/test_types.py +0 -12
  367. orchestrator_core-4.1.0rc2/test/unit_tests/test_workflow.py +0 -630
  368. orchestrator_core-4.1.0rc2/test/unit_tests/utils/__init__.py +0 -0
  369. orchestrator_core-4.1.0rc2/test/unit_tests/utils/get_subscription_dict.py +0 -11
  370. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_datetime.py +0 -6
  371. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_errors.py +0 -54
  372. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_functional.py +0 -127
  373. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_get_updated_properties.py +0 -127
  374. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_json.py +0 -119
  375. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_search_query.py +0 -170
  376. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_state.py +0 -490
  377. orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_strings.py +0 -6
  378. orchestrator_core-4.1.0rc2/test/unit_tests/websocket/__init__.py +0 -0
  379. orchestrator_core-4.1.0rc2/test/unit_tests/websocket/test_broadcast.py +0 -93
  380. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/__init__.py +0 -384
  381. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/conftest.py +0 -0
  382. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/shared/__init__.py +0 -0
  383. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -58
  384. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/__init__.py +0 -0
  385. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -75
  386. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -79
  387. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -39
  388. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_validate_products.py +0 -9
  389. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_async_workflow.py +0 -331
  390. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_config_db_code.py +0 -77
  391. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -103
  392. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -64
  393. orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_modify_note.py +0 -26
  394. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/LICENSE +0 -0
  395. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/__init__.py +0 -0
  396. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/__init__.py +0 -0
  397. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/api.py +0 -0
  398. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  399. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  400. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  401. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  402. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  403. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  404. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
  405. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  406. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  407. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  408. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  409. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/error_handling.py +0 -0
  410. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/helpers.py +0 -0
  411. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/api/models.py +0 -0
  412. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/app.py +0 -0
  413. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/__init__.py +0 -0
  414. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  415. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  416. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  417. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generate.py +0 -0
  418. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/__init__.py +0 -0
  419. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/README +0 -0
  420. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  421. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  422. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  423. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  424. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  425. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  426. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  427. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  428. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  429. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/__init__.py +0 -0
  430. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/enums.py +0 -0
  431. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/helpers.py +0 -0
  432. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/migration.py +0 -0
  433. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/product.py +0 -0
  434. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/product_block.py +0 -0
  435. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/settings.py +0 -0
  436. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/translations.py +0 -0
  437. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/unittest.py +0 -0
  438. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/validations.py +0 -0
  439. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/generator/workflow.py +0 -0
  440. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  441. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  442. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  443. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  444. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  445. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  446. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  447. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  448. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  449. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  450. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  451. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  452. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  453. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  454. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  455. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  456. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
  457. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/product.j2 +0 -0
  458. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  459. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  460. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  461. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  462. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  463. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  464. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  465. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  466. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  467. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  468. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  469. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/helpers/__init__.py +0 -0
  470. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/helpers/input_helpers.py +0 -0
  471. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/helpers/print_helpers.py +0 -0
  472. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/main.py +0 -0
  473. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/migrate_tasks.py +0 -0
  474. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/migrate_workflows.py +0 -0
  475. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/migration_helpers.py +0 -0
  476. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/cli/scheduler.py +0 -0
  477. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/config/__init__.py +0 -0
  478. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/config/assignee.py +0 -0
  479. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/__init__.py +0 -0
  480. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/database.py +0 -0
  481. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/__init__.py +0 -0
  482. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/filters.py +0 -0
  483. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/process.py +0 -0
  484. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/product.py +0 -0
  485. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/product_block.py +0 -0
  486. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/resource_type.py +0 -0
  487. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  488. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  489. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/subscription.py +0 -0
  490. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/filters/workflow.py +0 -0
  491. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/helpers.py +0 -0
  492. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/listeners.py +0 -0
  493. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/loaders.py +0 -0
  494. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/queries/__init__.py +0 -0
  495. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/queries/subscription.py +0 -0
  496. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/queries/subscription_instance.py +0 -0
  497. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/range/__init__.py +0 -0
  498. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/range/range.py +0 -0
  499. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/__init__.py +0 -0
  500. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/process.py +0 -0
  501. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/product.py +0 -0
  502. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/product_block.py +0 -0
  503. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/resource_type.py +0 -0
  504. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/sorting.py +0 -0
  505. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/subscription.py +0 -0
  506. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/db/sorting/workflow.py +0 -0
  507. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/devtools/__init__.py +0 -0
  508. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/devtools/populator.py +0 -0
  509. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/devtools/scripts/__init__.py +0 -0
  510. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  511. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  512. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/devtools/scripts/shared.py +0 -0
  513. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/distlock/__init__.py +0 -0
  514. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/distlock/distlock_manager.py +0 -0
  515. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/distlock/managers/__init__.py +0 -0
  516. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  517. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  518. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/__init__.py +0 -0
  519. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/base.py +0 -0
  520. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/context_cache.py +0 -0
  521. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/customer_description.py +0 -0
  522. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/helpers.py +0 -0
  523. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/lifecycle.py +0 -0
  524. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/domain/subscription_instance_transform.py +0 -0
  525. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/exception_handlers.py +0 -0
  526. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/__init__.py +0 -0
  527. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/validators/__init__.py +0 -0
  528. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  529. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/validators/customer_id.py +0 -0
  530. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/validators/display_subscription.py +0 -0
  531. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/validators/network_type_validators.py +0 -0
  532. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/forms/validators/product_id.py +0 -0
  533. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/__init__.py +0 -0
  534. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/autoregistration.py +0 -0
  535. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/extensions/__init__.py +0 -0
  536. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/extensions/model_cache.py +0 -0
  537. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/extensions/stats.py +0 -0
  538. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/loaders/__init__.py +0 -0
  539. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  540. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/mutations/customer_description.py +0 -0
  541. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/mutations/start_process.py +0 -0
  542. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/pagination.py +0 -0
  543. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/__init__.py +0 -0
  544. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/customer.py +0 -0
  545. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/helpers.py +0 -0
  546. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/process.py +0 -0
  547. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/product.py +0 -0
  548. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/product_block.py +0 -0
  549. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  550. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/settings.py +0 -0
  551. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/subscription.py +0 -0
  552. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/version.py +0 -0
  553. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/resolvers/workflow.py +0 -0
  554. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schema.py +0 -0
  555. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/__init__.py +0 -0
  556. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/customer.py +0 -0
  557. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/customer_description.py +0 -0
  558. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/errors.py +0 -0
  559. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  560. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/helpers.py +0 -0
  561. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/product_block.py +0 -0
  562. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/resource_type.py +0 -0
  563. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/settings.py +0 -0
  564. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  565. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/subscription.py +0 -0
  566. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/schemas/version.py +0 -0
  567. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/__init__.py +0 -0
  568. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  569. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  570. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  571. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  572. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  573. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  574. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/override_class.py +0 -0
  575. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  576. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/log_config.py +0 -0
  577. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/metrics/__init__.py +0 -0
  578. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/metrics/engine.py +0 -0
  579. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/metrics/init.py +0 -0
  580. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/metrics/processes.py +0 -0
  581. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/metrics/subscriptions.py +0 -0
  582. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/README +0 -0
  583. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/alembic.ini +0 -0
  584. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/env.py +0 -0
  585. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/helpers.py +0 -0
  586. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/script.py.mako +0 -0
  587. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  588. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/templates/env.py.j2 +0 -0
  589. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  590. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  591. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  592. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  593. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  594. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  595. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  596. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  597. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  598. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  599. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  600. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  601. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  602. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  603. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  604. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  605. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  606. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  607. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  608. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  609. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  610. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  611. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
  612. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  613. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  614. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  615. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
  616. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/py.typed +0 -0
  617. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schedules/__init__.py +0 -0
  618. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schedules/resume_workflows.py +0 -0
  619. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schedules/scheduling.py +0 -0
  620. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schedules/task_vacuum.py +0 -0
  621. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schedules/validate_products.py +0 -0
  622. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schedules/validate_subscriptions.py +0 -0
  623. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/__init__.py +0 -0
  624. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/base.py +0 -0
  625. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/engine_settings.py +0 -0
  626. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/fixed_input.py +0 -0
  627. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/problem_detail.py +0 -0
  628. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/product.py +0 -0
  629. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/product_block.py +0 -0
  630. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/resource_type.py +0 -0
  631. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/subscription.py +0 -0
  632. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/subscription_descriptions.py +0 -0
  633. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/schemas/workflow.py +0 -0
  634. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/security.py +0 -0
  635. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/__init__.py +0 -0
  636. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/celery.py +0 -0
  637. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/fixed_inputs.py +0 -0
  638. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/input_state.py +0 -0
  639. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/process_broadcast_thread.py +0 -0
  640. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/products.py +0 -0
  641. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/resource_types.py +0 -0
  642. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/settings.py +0 -0
  643. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/settings_env_variables.py +0 -0
  644. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/subscription_relations.py +0 -0
  645. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/subscriptions.py +0 -0
  646. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/tasks.py +0 -0
  647. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/translations.py +0 -0
  648. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/services/workflows.py +0 -0
  649. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/settings.py +0 -0
  650. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/targets.py +0 -0
  651. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/types.py +0 -0
  652. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/__init__.py +0 -0
  653. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/auth.py +0 -0
  654. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/crypt.py +0 -0
  655. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/datetime.py +0 -0
  656. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/deprecation_logger.py +0 -0
  657. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/docs.py +0 -0
  658. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/expose_settings.py +0 -0
  659. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/fixed_inputs.py +0 -0
  660. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/functional.py +0 -0
  661. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/get_subscription_dict.py +0 -0
  662. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/get_updated_properties.py +0 -0
  663. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/helpers.py +0 -0
  664. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/json.py +0 -0
  665. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/redis.py +0 -0
  666. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/redis_client.py +0 -0
  667. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/search_query.py +0 -0
  668. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/state.py +0 -0
  669. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/strings.py +0 -0
  670. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/utils/validate_data_version.py +0 -0
  671. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/version.py +0 -0
  672. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/websocket/__init__.py +0 -0
  673. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  674. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  675. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/websocket/websocket_manager.py +0 -0
  676. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/__init__.py +0 -0
  677. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/removed_workflow.py +0 -0
  678. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/tasks/__init__.py +0 -0
  679. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  680. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  681. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
  682. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/orchestrator/workflows/tasks/validate_products.py +0 -0
  683. {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc2}/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.0rc2
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.0rc2"
16
+ __version__ = "4.2.0rc2"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -123,6 +123,7 @@ def get_auth_callbacks(steps: StepList, workflow: Workflow) -> tuple[Authorizer
123
123
  def can_be_resumed(status: ProcessStatus) -> bool:
124
124
  return status in (
125
125
  ProcessStatus.SUSPENDED, # Can be resumed
126
+ ProcessStatus.WAITING, # Can be retried
126
127
  ProcessStatus.FAILED, # Can be retried
127
128
  ProcessStatus.API_UNAVAILABLE, # subtype of FAILED
128
129
  ProcessStatus.INCONSISTENT_DATA, # subtype of FAILED
@@ -158,6 +159,9 @@ def delete(process_id: UUID) -> None:
158
159
  if not process:
159
160
  raise_status(HTTPStatus.NOT_FOUND)
160
161
 
162
+ if not process.is_task:
163
+ raise_status(HTTPStatus.BAD_REQUEST)
164
+
161
165
  db.session.delete(db.session.get(ProcessTable, process_id))
162
166
  db.session.commit()
163
167
 
@@ -209,7 +213,7 @@ def resume_process_endpoint(
209
213
  if process.last_status == ProcessStatus.SUSPENDED:
210
214
  if auth_resume is not None and not auth_resume(user_model):
211
215
  raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to resume step")
212
- elif process.last_status == ProcessStatus.FAILED:
216
+ elif process.last_status in (ProcessStatus.FAILED, ProcessStatus.WAITING):
213
217
  if auth_retry is not None and not auth_retry(user_model):
214
218
  raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to retry step")
215
219
 
@@ -270,7 +274,7 @@ def update_progress_on_awaiting_process_endpoint(
270
274
  @router.put(
271
275
  "/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
272
276
  )
273
- 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]:
274
278
  """Retry all task processes in status Failed, Waiting, API Unavailable or Inconsistent Data.
275
279
 
276
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))
@@ -7,8 +7,12 @@ from sqlalchemy import select
7
7
  from sqlalchemy.sql.expression import Delete, Insert
8
8
  from sqlalchemy.sql.selectable import ScalarSelect
9
9
 
10
- from orchestrator.cli.domain_gen_helpers.helpers import get_product_block_names, sql_compile
11
- from orchestrator.cli.domain_gen_helpers.types import DomainModelChanges
10
+ from orchestrator.cli.domain_gen_helpers.helpers import (
11
+ format_block_relation_to_dict,
12
+ get_product_block_names,
13
+ sql_compile,
14
+ )
15
+ from orchestrator.cli.domain_gen_helpers.types import BlockRelationDict, DomainModelChanges
12
16
  from orchestrator.cli.helpers.input_helpers import get_user_input
13
17
  from orchestrator.cli.helpers.print_helpers import COLOR, print_fmt, str_fmt
14
18
  from orchestrator.db import db
@@ -68,13 +72,17 @@ def map_delete_product_blocks(product_blocks: dict[str, type[ProductBlockModel]]
68
72
  return {name for name in existing_product_blocks if name not in product_blocks}
69
73
 
70
74
 
71
- def map_product_block_additional_relations(changes: DomainModelChanges) -> DomainModelChanges:
75
+ def map_product_block_additional_relations(
76
+ changes: DomainModelChanges, models: dict[str, type[ProductBlockModel]], confirm_warnings: bool
77
+ ) -> DomainModelChanges:
72
78
  """Map additional relations for created product blocks.
73
79
 
74
80
  Adds resource type and product block relations.
75
81
 
76
82
  Args:
77
83
  changes: DomainModelChanges class with all changes.
84
+ models: All product block models.
85
+ confirm_warnings: confirm warnings to continue, fully knowing that things can go wrong.
78
86
 
79
87
  Returns: Updated DomainModelChanges.
80
88
  """
@@ -86,7 +94,12 @@ def map_product_block_additional_relations(changes: DomainModelChanges) -> Domai
86
94
  product_blocks_in_model = block_class._get_depends_on_product_block_types()
87
95
  product_blocks_types_in_model = get_depends_on_product_block_type_list(product_blocks_in_model)
88
96
  for product_block_name in get_product_block_names(product_blocks_types_in_model):
89
- changes.create_product_block_relations.setdefault(product_block_name, set()).add(block_name)
97
+ relation_list = changes.create_product_block_relations.get(product_block_name, [])
98
+ new_relation = format_block_relation_to_dict(block_name, product_block_name, models, confirm_warnings)
99
+
100
+ if new_relation not in relation_list:
101
+ changes.create_product_block_relations[product_block_name] = relation_list + [new_relation]
102
+
90
103
  return changes
91
104
 
92
105
 
@@ -147,31 +160,35 @@ def generate_delete_product_blocks_sql(delete_product_blocks: set[str]) -> list[
147
160
  ]
148
161
 
149
162
 
150
- def generate_create_product_block_relations_sql(create_block_relations: dict[str, set[str]]) -> list[str]:
163
+ def generate_create_product_block_relations_sql(
164
+ create_block_relations: dict[str, list[BlockRelationDict]],
165
+ ) -> list[str]:
151
166
  """Generate SQL to create product block to product block relations.
152
167
 
153
168
  Args:
154
169
  create_block_relations: Dict with product blocks by product block
155
170
  - key: product block name.
156
- - value: Set of product block names to relate with.
171
+ - list: List of product blocks to relate with by prop names.
157
172
 
158
173
  Returns: List of SQL to create relation between product blocks.
159
174
  """
160
175
 
161
- def create_block_relation(depends_block_name: str, block_names: set[str]) -> str:
176
+ def create_block_relation(depends_block_name: str, block_relations: list[BlockRelationDict]) -> str:
162
177
  depends_block_id_sql = get_product_block_id(depends_block_name)
163
178
 
164
- def create_block_relation_dict(block_name: str) -> dict[str, ScalarSelect]:
165
- block_id_sql = get_product_block_id(block_name)
179
+ def create_block_relation_dict(block_relation: BlockRelationDict) -> dict[str, ScalarSelect]:
180
+ block_id_sql = get_product_block_id(block_relation["name"])
166
181
  return {"in_use_by_id": block_id_sql, "depends_on_id": depends_block_id_sql}
167
182
 
168
- product_product_block_relation_dicts = [create_block_relation_dict(block_name) for block_name in block_names]
183
+ product_product_block_relation_dicts = [create_block_relation_dict(block) for block in block_relations]
169
184
  return sql_compile(Insert(ProductBlockRelationTable).values(product_product_block_relation_dicts))
170
185
 
171
186
  return [create_block_relation(*item) for item in create_block_relations.items()]
172
187
 
173
188
 
174
- def generate_create_product_block_instance_relations_sql(product_block_relations: dict[str, set[str]]) -> list[str]:
189
+ def generate_create_product_block_instance_relations_sql(
190
+ product_block_relations: dict[str, list[BlockRelationDict]],
191
+ ) -> list[str]:
175
192
  """Generate SQL to create resource type instance values for existing instances.
176
193
 
177
194
  Args:
@@ -183,12 +200,14 @@ def generate_create_product_block_instance_relations_sql(product_block_relations
183
200
  """
184
201
 
185
202
  def create_subscription_instance_relations(
186
- depends_block_name: str, block_names: set[str]
203
+ depends_block_name: str, block_relations: list[BlockRelationDict]
187
204
  ) -> Generator[str, None, None]:
188
205
  depends_block_id_sql = get_product_block_id(depends_block_name)
189
206
 
190
- def map_subscription_instances(block_name: str) -> dict[str, list[dict[str, str | ScalarSelect]]]:
191
- in_use_by_id_sql = get_product_block_id(block_name)
207
+ def map_subscription_instances(
208
+ block_relation: BlockRelationDict,
209
+ ) -> dict[str, list[dict[str, str | ScalarSelect]]]:
210
+ in_use_by_id_sql = get_product_block_id(block_relation["name"])
192
211
  stmt = select(
193
212
  SubscriptionInstanceTable.subscription_instance_id, SubscriptionInstanceTable.subscription_id
194
213
  ).where(SubscriptionInstanceTable.product_block_id.in_(in_use_by_id_sql))
@@ -206,13 +225,14 @@ def generate_create_product_block_instance_relations_sql(product_block_relations
206
225
  "in_use_by_id": instance.subscription_instance_id,
207
226
  "depends_on_id": get_subscription_instance(instance.subscription_id, depends_block_id_sql),
208
227
  "order_id": 0,
228
+ "domain_model_attr": block_relation["attribute_name"],
209
229
  }
210
230
  for instance in subscription_instances
211
231
  ]
212
232
 
213
233
  return {"instance_list": instance_list, "instance_relation_list": instance_relation_list}
214
234
 
215
- create_instance_list = [map_subscription_instances(block_name) for block_name in block_names]
235
+ create_instance_list = [map_subscription_instances(block_relation) for block_relation in block_relations]
216
236
 
217
237
  subscription_instance_dicts = list(flatten(item["instance_list"] for item in create_instance_list))
218
238
  subscription_relation_dicts = list(flatten(item["instance_relation_list"] for item in create_instance_list))
@@ -9,7 +9,7 @@ from sqlalchemy.sql.selectable import ScalarSelect
9
9
 
10
10
  from orchestrator.cli.domain_gen_helpers.helpers import sql_compile
11
11
  from orchestrator.cli.domain_gen_helpers.product_block_helpers import get_product_block_id, get_product_block_ids
12
- from orchestrator.cli.domain_gen_helpers.types import DomainModelChanges
12
+ from orchestrator.cli.domain_gen_helpers.types import BlockRelationDict, DomainModelChanges
13
13
  from orchestrator.cli.helpers.input_helpers import _enumerate_menu_keys, _prompt_user_menu, get_user_input
14
14
  from orchestrator.cli.helpers.print_helpers import COLOR, noqa_print, print_fmt, str_fmt
15
15
  from orchestrator.db import db
@@ -262,8 +262,8 @@ def _has_product_existing_instances(product_name: str) -> bool:
262
262
  return bool(product and get_product_instance_count(product.product_id))
263
263
 
264
264
 
265
- def _find_new_relations(block_name: str, relations: dict[str, set[str]]) -> set[str]:
266
- return set(flatten((list(v) for k, v in relations.items() if block_name in k)))
265
+ def _find_new_block_relations(block_name: str, relations: dict[str, list[BlockRelationDict]]) -> set[str]:
266
+ return {r["name"] for r in relations.get(block_name, [])}
267
267
 
268
268
 
269
269
  def map_create_resource_type_instances(changes: DomainModelChanges) -> dict[str, set[str]]:
@@ -285,11 +285,11 @@ def map_create_resource_type_instances(changes: DomainModelChanges) -> dict[str,
285
285
  if block and get_block_instance_count(block.product_block_id):
286
286
  return True
287
287
 
288
- related_block_names = _find_new_relations(block_name, changes.create_product_block_relations)
288
+ related_block_names = _find_new_block_relations(block_name, changes.create_product_block_relations)
289
289
  if related_block_names:
290
290
  return any(_has_existing_instances(name) for name in related_block_names)
291
291
 
292
- related_product_names = _find_new_relations(block_name, changes.create_product_to_block_relations)
292
+ related_product_names = changes.create_product_to_block_relations.get(block_name, set())
293
293
  return any(_has_product_existing_instances(name) for name in related_product_names)
294
294
 
295
295
  return {