orchestrator-core 3.2.3__tar.gz → 4.0.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 (663) hide show
  1. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.bumpversion.cfg +2 -2
  2. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/PKG-INFO +6 -6
  3. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/application/workflow.md +8 -2
  4. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/migration-guide/2.0.md +0 -4
  5. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/migration-guide/3.0.md +0 -4
  6. orchestrator_core-4.0.0rc2/docs/migration-guide/4.0.md +69 -0
  7. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/mkdocs.yml +1 -0
  8. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/__init__.py +1 -1
  9. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -2
  10. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/new_product_migration.j2 +5 -1
  11. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_tasks.py +5 -5
  12. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_workflows.py +1 -2
  13. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/models.py +3 -1
  14. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/base.py +4 -24
  15. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/customer_description.py +0 -4
  16. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/mutations/customer_description.py +1 -1
  17. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/helpers.py +14 -6
  18. orchestrator_core-4.0.0rc2/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +33 -0
  19. orchestrator_core-4.0.0rc2/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +28 -0
  20. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/validate_subscriptions.py +4 -4
  21. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/workflow.py +1 -0
  22. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/celery.py +11 -3
  23. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/processes.py +2 -2
  24. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/subscriptions.py +10 -23
  25. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/workflows.py +8 -4
  26. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/settings.py +0 -4
  27. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/targets.py +1 -0
  28. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/get_subscription_dict.py +0 -4
  29. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/redis.py +1 -67
  30. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/modify_note.py +3 -11
  31. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/steps.py +2 -86
  32. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/validate_product_type.py +2 -2
  33. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/validate_products.py +3 -6
  34. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/utils.py +3 -23
  35. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/pyproject.toml +5 -5
  36. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_subscriptions.py +3 -58
  37. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +5 -1
  38. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +5 -1
  39. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +5 -1
  40. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/conftest.py +1 -2
  41. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/workflows.py +8 -1
  42. orchestrator_core-4.0.0rc2/test/unit_tests/utils/get_subscription_dict.py +11 -0
  43. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/__init__.py +3 -1
  44. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +7 -3
  45. orchestrator_core-3.2.3/test/unit_tests/api/test_caching.py +0 -120
  46. orchestrator_core-3.2.3/test/unit_tests/utils/get_subscription_dict.py +0 -38
  47. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.coveragerc +0 -0
  48. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  49. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  50. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/dependabot.yml +0 -0
  51. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/README.md +0 -0
  52. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/build-push-container.yml +0 -0
  53. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/changelog.yml +0 -0
  54. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/codeql-analysis.yml +0 -0
  55. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/gh-pages.yml +0 -0
  56. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/issues.yml +0 -0
  57. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/publish-package.yml +0 -0
  58. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/run-codspeed-tests.yml +0 -0
  59. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/run-linting-tests.yml +0 -0
  60. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/run-unit-tests.yml +0 -0
  61. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.github/workflows/scheduled-build.yml +0 -0
  62. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.gitignore +0 -0
  63. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.pre-commit-config.yaml +0 -0
  64. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/.stignore +0 -0
  65. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/CHANGELOG.md +0 -0
  66. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/Dockerfile +0 -0
  67. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/LICENSE +0 -0
  68. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/NOTICE +0 -0
  69. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/README.md +0 -0
  70. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/codecov.yml +0 -0
  71. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/application/domainmodels.md +0 -0
  72. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/application/forms-frontend.md +0 -0
  73. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/application/tasks.md +0 -0
  74. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/framework.md +0 -0
  75. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/img/base-orchestrator-setup.png +0 -0
  76. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  77. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  78. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  79. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
  80. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/philosophy.md +0 -0
  81. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/backfilling.md +0 -0
  82. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/context.md +0 -0
  83. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/imports.md +0 -0
  84. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/introduction.md +0 -0
  85. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/ip_static.md +0 -0
  86. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/ip_static.png +0 -0
  87. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
  88. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  89. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_vpn.md +0 -0
  90. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_vpn.png +0 -0
  91. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/modelling.md +0 -0
  92. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/node.md +0 -0
  93. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/node.png +0 -0
  94. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/port.md +0 -0
  95. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/port.png +0 -0
  96. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/product_block_graph.md +0 -0
  97. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/product_block_graph.png +0 -0
  98. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/standards.md +0 -0
  99. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/terminology.md +0 -0
  100. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/architecture/tldr.md +0 -0
  101. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/contributing/development.md +0 -0
  102. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/contributing/guidelines.md +0 -0
  103. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/contributing/testing.md +0 -0
  104. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/css/custom.css +0 -0
  105. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/css/style.css +0 -0
  106. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/css/termynal.css +0 -0
  107. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/getting-started/base.md +0 -0
  108. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/getting-started/docker.md +0 -0
  109. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/getting-started/orchestration-ui.md +0 -0
  110. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/getting-started/prepare-source-folder.md +0 -0
  111. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/getting-started/versions.md +0 -0
  112. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/img/WFO-Emblem-White.png +0 -0
  113. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/img/favicon.ico +0 -0
  114. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/index.md +0 -0
  115. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/js/custom.js +0 -0
  116. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/js/termynal.js +0 -0
  117. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/api.md +0 -0
  118. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/app/app.md +0 -0
  119. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/app/scaling.md +0 -0
  120. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
  121. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/cli.md +0 -0
  122. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/database.md +0 -0
  123. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/generator.md +0 -0
  124. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/instantiating.md +0 -0
  125. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/model_attributes.md +0 -0
  126. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/overview.md +0 -0
  127. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/product_blocks.md +0 -0
  128. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/product_types.md +0 -0
  129. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/properties.md +0 -0
  130. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  131. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/type_casting.md +0 -0
  132. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/union_types.md +0 -0
  133. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/validation.md +0 -0
  134. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/forms.md +0 -0
  135. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/graphql.md +0 -0
  136. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/python.md +0 -0
  137. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/search.md +0 -0
  138. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/search_overview.png +0 -0
  139. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/serialization.md +0 -0
  140. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/tasks.md +0 -0
  141. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/tests.md +0 -0
  142. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/tldr.md +0 -0
  143. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/websockets.md +0 -0
  144. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/workflows/callbacks.md +0 -0
  145. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
  146. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/reference-docs/workflows/workflow-steps.md +0 -0
  147. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/bootstrap.md +0 -0
  148. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/create-your-own.md +0 -0
  149. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/docker-installation.md +0 -0
  150. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/domain-models.md +0 -0
  151. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/execute-workflows.md +0 -0
  152. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/generator.md +0 -0
  153. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/l2_point_to_point.png +0 -0
  154. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-create.md +0 -0
  155. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-modify.md +0 -0
  156. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-terminate.md +0 -0
  157. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-validate.md +0 -0
  158. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/overview.md +0 -0
  159. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/scenario.md +0 -0
  160. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/workflow-basics.md +0 -0
  161. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/workflow-introduction.md +0 -0
  162. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/create-user-group.md +0 -0
  163. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/create-user.md +0 -0
  164. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/database-migration.md +0 -0
  165. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/debian.md +0 -0
  166. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/docker.md +0 -0
  167. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/domain-models.md +0 -0
  168. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/explore.md +0 -0
  169. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/input-forms.md +0 -0
  170. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/macos.md +0 -0
  171. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/modify-user-group.md +0 -0
  172. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/modify-user.md +0 -0
  173. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/register-workflows.md +0 -0
  174. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/start-applications.md +0 -0
  175. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/terminate-user-group.md +0 -0
  176. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/terminate-user.md +0 -0
  177. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/workflow-introduction.md +0 -0
  178. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/workshop-overview.md +0 -0
  179. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/images/Software-topology.drawio.png +0 -0
  180. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/images/clab_topology.png +0 -0
  181. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/images/metadata_products.png +0 -0
  182. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/images/netbox_devices_active.png +0 -0
  183. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/images/subscriptions.png +0 -0
  184. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/docs/workshops/images/topology.drawio.png +0 -0
  185. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/includes/abbreviations.md +0 -0
  186. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/nitpick-style.toml +0 -0
  187. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/__init__.py +0 -0
  188. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/__init__.py +0 -0
  189. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/api.py +0 -0
  190. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  191. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  192. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  193. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  194. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  195. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  196. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
  197. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
  198. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  199. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  200. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  201. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  202. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/error_handling.py +0 -0
  203. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/helpers.py +0 -0
  204. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/api/models.py +0 -0
  205. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/app.py +0 -0
  206. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/__init__.py +0 -0
  207. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/database.py +0 -0
  208. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  209. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  210. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  211. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  212. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  213. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  214. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  215. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generate.py +0 -0
  216. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/__init__.py +0 -0
  217. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/README +0 -0
  218. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  219. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  220. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  221. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  222. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  223. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  224. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  225. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  226. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  227. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/__init__.py +0 -0
  228. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/enums.py +0 -0
  229. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/helpers.py +0 -0
  230. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/migration.py +0 -0
  231. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/product.py +0 -0
  232. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/product_block.py +0 -0
  233. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/settings.py +0 -0
  234. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/translations.py +0 -0
  235. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/unittest.py +0 -0
  236. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/validations.py +0 -0
  237. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/workflow.py +0 -0
  238. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  239. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  240. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  241. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  242. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  243. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  244. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  245. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  246. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  247. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  248. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  249. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  250. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  251. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  252. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  253. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  254. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  255. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/product.j2 +0 -0
  256. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  257. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  258. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  259. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  260. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  261. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  262. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  263. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  264. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  265. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  266. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  267. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/helpers/__init__.py +0 -0
  268. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/helpers/input_helpers.py +0 -0
  269. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/helpers/print_helpers.py +0 -0
  270. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/main.py +0 -0
  271. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_domain_models.py +0 -0
  272. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migration_helpers.py +0 -0
  273. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/cli/scheduler.py +0 -0
  274. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/config/__init__.py +0 -0
  275. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/config/assignee.py +0 -0
  276. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/__init__.py +0 -0
  277. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/database.py +0 -0
  278. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/__init__.py +0 -0
  279. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/filters.py +0 -0
  280. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/process.py +0 -0
  281. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/product.py +0 -0
  282. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/product_block.py +0 -0
  283. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/resource_type.py +0 -0
  284. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  285. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  286. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/subscription.py +0 -0
  287. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/workflow.py +0 -0
  288. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/helpers.py +0 -0
  289. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/listeners.py +0 -0
  290. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/loaders.py +0 -0
  291. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/queries/__init__.py +0 -0
  292. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/queries/subscription.py +0 -0
  293. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/queries/subscription_instance.py +0 -0
  294. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/range/__init__.py +0 -0
  295. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/range/range.py +0 -0
  296. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/__init__.py +0 -0
  297. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/process.py +0 -0
  298. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/product.py +0 -0
  299. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/product_block.py +0 -0
  300. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/resource_type.py +0 -0
  301. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/sorting.py +0 -0
  302. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/subscription.py +0 -0
  303. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/workflow.py +0 -0
  304. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/__init__.py +0 -0
  305. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/populator.py +0 -0
  306. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/__init__.py +0 -0
  307. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  308. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  309. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/shared.py +0 -0
  310. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/__init__.py +0 -0
  311. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/distlock_manager.py +0 -0
  312. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/managers/__init__.py +0 -0
  313. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  314. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  315. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/__init__.py +0 -0
  316. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/context_cache.py +0 -0
  317. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/helpers.py +0 -0
  318. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/lifecycle.py +0 -0
  319. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/domain/subscription_instance_transform.py +0 -0
  320. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/exception_handlers.py +0 -0
  321. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/__init__.py +0 -0
  322. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/__init__.py +0 -0
  323. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  324. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/customer_id.py +0 -0
  325. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/display_subscription.py +0 -0
  326. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/network_type_validators.py +0 -0
  327. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/product_id.py +0 -0
  328. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/__init__.py +0 -0
  329. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/autoregistration.py +0 -0
  330. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/extensions/__init__.py +0 -0
  331. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/extensions/model_cache.py +0 -0
  332. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/extensions/stats.py +0 -0
  333. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/loaders/__init__.py +0 -0
  334. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  335. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/mutations/start_process.py +0 -0
  336. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/pagination.py +0 -0
  337. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/__init__.py +0 -0
  338. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/customer.py +0 -0
  339. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/helpers.py +0 -0
  340. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/process.py +0 -0
  341. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/product.py +0 -0
  342. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/product_block.py +0 -0
  343. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  344. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/settings.py +0 -0
  345. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/subscription.py +0 -0
  346. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/version.py +0 -0
  347. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/workflow.py +0 -0
  348. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schema.py +0 -0
  349. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/__init__.py +0 -0
  350. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/customer.py +0 -0
  351. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/customer_description.py +0 -0
  352. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/errors.py +0 -0
  353. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  354. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/helpers.py +0 -0
  355. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/process.py +0 -0
  356. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/product.py +0 -0
  357. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/product_block.py +0 -0
  358. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/resource_type.py +0 -0
  359. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/settings.py +0 -0
  360. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  361. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/subscription.py +0 -0
  362. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/version.py +0 -0
  363. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/workflow.py +0 -0
  364. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/types.py +0 -0
  365. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/__init__.py +0 -0
  366. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  367. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  368. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  369. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  370. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  371. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  372. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/override_class.py +0 -0
  373. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  374. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/log_config.py +0 -0
  375. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/README +0 -0
  376. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/alembic.ini +0 -0
  377. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/env.py +0 -0
  378. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/script.py.mako +0 -0
  379. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
  380. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/templates/env.py.j2 +0 -0
  381. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  382. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  383. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  384. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  385. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  386. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  387. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  388. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  389. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  390. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  391. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  392. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  393. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  394. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  395. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  396. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  397. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  398. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  399. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  400. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  401. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  402. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  403. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  404. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  405. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  406. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/py.typed +0 -0
  407. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/__init__.py +0 -0
  408. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/resume_workflows.py +0 -0
  409. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/scheduling.py +0 -0
  410. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/task_vacuum.py +0 -0
  411. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/validate_products.py +0 -0
  412. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/__init__.py +0 -0
  413. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/base.py +0 -0
  414. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/engine_settings.py +0 -0
  415. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/fixed_input.py +0 -0
  416. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/problem_detail.py +0 -0
  417. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/process.py +0 -0
  418. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/product.py +0 -0
  419. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/product_block.py +0 -0
  420. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/resource_type.py +0 -0
  421. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/subscription.py +0 -0
  422. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/subscription_descriptions.py +0 -0
  423. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/security.py +0 -0
  424. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/__init__.py +0 -0
  425. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/fixed_inputs.py +0 -0
  426. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/input_state.py +0 -0
  427. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/process_broadcast_thread.py +0 -0
  428. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/products.py +0 -0
  429. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/resource_types.py +0 -0
  430. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/settings.py +0 -0
  431. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/subscription_relations.py +0 -0
  432. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/tasks.py +0 -0
  433. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/services/translations.py +0 -0
  434. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/types.py +0 -0
  435. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/__init__.py +0 -0
  436. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/crypt.py +0 -0
  437. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/datetime.py +0 -0
  438. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/deprecation_logger.py +0 -0
  439. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/docs.py +0 -0
  440. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/enrich_process.py +0 -0
  441. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/errors.py +0 -0
  442. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/fixed_inputs.py +0 -0
  443. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/functional.py +0 -0
  444. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/get_updated_properties.py +0 -0
  445. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/helpers.py +0 -0
  446. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/json.py +0 -0
  447. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/redis_client.py +0 -0
  448. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/search_query.py +0 -0
  449. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/state.py +0 -0
  450. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/strings.py +0 -0
  451. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/utils/validate_data_version.py +0 -0
  452. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/version.py +0 -0
  453. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/__init__.py +0 -0
  454. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  455. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  456. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/websocket_manager.py +0 -0
  457. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflow.py +0 -0
  458. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/__init__.py +0 -0
  459. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/removed_workflow.py +0 -0
  460. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/__init__.py +0 -0
  461. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  462. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  463. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/translations/en-GB.json +0 -0
  464. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/setup.cfg +0 -0
  465. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/setup.py +0 -0
  466. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/__init__.py +0 -0
  467. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/__init__.py +0 -0
  468. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/conftest.py +0 -0
  469. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  470. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  471. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
  472. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
  473. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  474. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
  475. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  476. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
  477. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  478. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
  479. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/test_test_product.py +0 -0
  480. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/__init__.py +0 -0
  481. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/__init__.py +0 -0
  482. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_health.py +0 -0
  483. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_helpers.py +0 -0
  484. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_models.py +0 -0
  485. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_processes.py +0 -0
  486. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_processes_ws.py +0 -0
  487. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_product_blocks.py +0 -0
  488. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_products.py +0 -0
  489. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_resource_types.py +0 -0
  490. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_settings.py +0 -0
  491. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
  492. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_workflows.py +0 -0
  493. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_ws.py +0 -0
  494. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/__init__.py +0 -0
  495. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/conftest.py +0 -0
  496. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
  497. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/main.py +0 -0
  498. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/env.py +0 -0
  499. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
  500. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
  501. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
  502. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
  503. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  504. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
  505. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
  506. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
  507. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
  508. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  509. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
  510. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
  511. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
  512. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
  513. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
  514. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
  515. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
  516. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
  517. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
  518. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
  519. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
  520. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
  521. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
  522. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
  523. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
  524. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
  525. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
  526. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
  527. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
  528. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
  529. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
  530. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
  531. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
  532. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
  533. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
  534. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
  535. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
  536. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
  537. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
  538. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
  539. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
  540. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
  541. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
  542. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
  543. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate.sh +0 -0
  544. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
  545. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
  546. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config1.yaml +0 -0
  547. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config2.yaml +0 -0
  548. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config3.yaml +0 -0
  549. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config4.yaml +0 -0
  550. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/generator/__init__.py +0 -0
  551. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/generator/test_enums.py +0 -0
  552. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/helpers.py +0 -0
  553. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_cli_generate.py +0 -0
  554. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_config_validation.py +0 -0
  555. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_generate_code.py +0 -0
  556. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
  557. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
  558. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/config.py +0 -0
  559. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/db/__init__.py +0 -0
  560. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/db/test_listeners.py +0 -0
  561. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/__init__.py +0 -0
  562. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base.py +0 -0
  563. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_multiple.py +0 -0
  564. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_performance.py +0 -0
  565. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_serializable_property.py +0 -0
  566. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
  567. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_with_union.py +0 -0
  568. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_lifecycle.py +0 -0
  569. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/__init__.py +0 -0
  570. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/processes.py +0 -0
  571. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/__init__.py +0 -0
  572. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  573. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
  574. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
  575. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
  576. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
  577. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
  578. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
  579. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
  580. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  581. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
  582. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
  583. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
  584. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
  585. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
  586. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
  587. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
  588. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
  589. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
  590. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
  591. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
  592. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/resource_types.py +0 -0
  593. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/__init__.py +0 -0
  594. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
  595. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_customer_id.py +0 -0
  596. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_display_subscription.py +0 -0
  597. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_generic_validators.py +0 -0
  598. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/__init__.py +0 -0
  599. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/conftest.py +0 -0
  600. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/extensions/__init__.py +0 -0
  601. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
  602. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/mutations/helpers.py +0 -0
  603. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
  604. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
  605. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_customer.py +0 -0
  606. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_process.py +0 -0
  607. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_processes.py +0 -0
  608. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_product.py +0 -0
  609. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_product_blocks.py +0 -0
  610. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_resource_types.py +0 -0
  611. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_settings.py +0 -0
  612. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
  613. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_subscription.py +0 -0
  614. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
  615. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_subscriptions.py +0 -0
  616. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_version.py +0 -0
  617. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_workflows.py +0 -0
  618. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/__init__.py +0 -0
  619. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/fixtures.py +0 -0
  620. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
  621. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
  622. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
  623. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
  624. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
  625. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
  626. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/helpers.py +0 -0
  627. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/migrations/__init__.py +0 -0
  628. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/migrations/test_cascade_constraint.py +0 -0
  629. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/schedules/__init__.py +0 -0
  630. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/schedules/test_scheduling.py +0 -0
  631. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/__init__.py +0 -0
  632. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_input_state.py +0 -0
  633. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_processes.py +0 -0
  634. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_products.py +0 -0
  635. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_subscription_relations.py +0 -0
  636. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_subscriptions.py +0 -0
  637. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_translations.py +0 -0
  638. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/test_db.py +0 -0
  639. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/test_types.py +0 -0
  640. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/test_workflow.py +0 -0
  641. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/__init__.py +0 -0
  642. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_datetime.py +0 -0
  643. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_errors.py +0 -0
  644. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_functional.py +0 -0
  645. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
  646. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_json.py +0 -0
  647. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_search_query.py +0 -0
  648. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_state.py +0 -0
  649. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_strings.py +0 -0
  650. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/websocket/__init__.py +0 -0
  651. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/websocket/test_broadcast.py +0 -0
  652. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/conftest.py +0 -0
  653. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/shared/__init__.py +0 -0
  654. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
  655. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/__init__.py +0 -0
  656. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
  657. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
  658. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
  659. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_async_workflow.py +0 -0
  660. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_config_db_code.py +0 -0
  661. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
  662. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -0
  663. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_modify_note.py +0 -0
@@ -1,9 +1,9 @@
1
1
  [bumpversion]
2
- current_version = 3.2.3
2
+ current_version = 4.0.0rc2
3
3
  commit = False
4
4
  tag = False
5
5
  parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(rc(?P<build>\d+))?
6
- serialize =
6
+ serialize =
7
7
  {major}.{minor}.{patch}rc{build}
8
8
  {major}.{minor}.{patch}
9
9
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 3.2.3
3
+ Version: 4.0.0rc2
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Requires-Python: >=3.11,<3.14
6
6
  Classifier: Intended Audience :: Information Technology
@@ -35,24 +35,24 @@ Requires-Dist: deprecated
35
35
  Requires-Dist: deepmerge==2.0
36
36
  Requires-Dist: fastapi~=0.115.2
37
37
  Requires-Dist: fastapi-etag==0.4.0
38
- Requires-Dist: more-itertools~=10.6.0
38
+ Requires-Dist: more-itertools~=10.7.0
39
39
  Requires-Dist: itsdangerous
40
40
  Requires-Dist: Jinja2==3.1.6
41
- Requires-Dist: orjson==3.10.16
41
+ Requires-Dist: orjson==3.10.18
42
42
  Requires-Dist: psycopg2-binary==2.9.10
43
43
  Requires-Dist: pydantic[email]~=2.8.2
44
- Requires-Dist: pydantic-settings~=2.8.0
44
+ Requires-Dist: pydantic-settings~=2.9.1
45
45
  Requires-Dist: python-dateutil==2.8.2
46
46
  Requires-Dist: python-rapidjson>=1.18,<1.21
47
47
  Requires-Dist: pytz==2025.2
48
48
  Requires-Dist: redis==5.1.1
49
49
  Requires-Dist: schedule==1.1.0
50
50
  Requires-Dist: semver==3.0.4
51
- Requires-Dist: sentry-sdk[fastapi]~=2.25.1
51
+ Requires-Dist: sentry-sdk[fastapi]~=2.27.0
52
52
  Requires-Dist: SQLAlchemy==2.0.40
53
53
  Requires-Dist: SQLAlchemy-Utils==0.41.2
54
54
  Requires-Dist: structlog
55
- Requires-Dist: typer==0.15.2
55
+ Requires-Dist: typer==0.15.3
56
56
  Requires-Dist: uvicorn[standard]~=0.34.0
57
57
  Requires-Dist: nwa-stdlib~=1.9.0
58
58
  Requires-Dist: oauth2-lib~=2.4.0
@@ -204,14 +204,20 @@ Validate workflows run integrity checks on an existing subscription. Checking th
204
204
  ```python
205
205
  params = dict(
206
206
  name="validate_node_enrollment",
207
- target="SYSTEM",
207
+ target="VALIDATE",
208
+ is_task=True,
208
209
  description="Validate Node Enrollment before production",
209
210
  tag="NodeEnrollment",
210
211
  search_phrase="Node Enrollment%",
211
212
  )
212
213
  ```
213
214
 
214
- It uses a `target` of `SYSTEM` - similar to how tasks are defined. That target is more of a free form sort of thing. Same thing with the `name` - that's the name of the actual workflow, and the `tag` is shared by of this set of workflows.
215
+ It uses a `target` of `VALIDATE`. Unlike system tasks, which use the `target` of `SYSTEM` designation, validate
216
+ workflows explicitly use `target="VALIDATE"` to distinguish themselves. This distinction reflects their different
217
+ purposes.
218
+ The `is_task` parameter is set to `True` to indicate that this workflow is a task. Tasks are workflows that are not
219
+ directly associated with a subscription and are typically used for background processing or system maintenance.
220
+ Both `SYSTEM` and `VALIDATE` workflows are considered tasks, but they serve different purposes.
215
221
 
216
222
  Generally the steps raise assertions if a check fails, otherwise return OK to the state:
217
223
 
@@ -1,7 +1,3 @@
1
- ---
2
- hide:
3
- - navigation
4
- ---
5
1
  # 2.0 Migration Guide
6
2
 
7
3
  In this document we'll help you migrate your orchestrator application from orchestrator-core 1.3 to 2.0.
@@ -1,7 +1,3 @@
1
- ---
2
- hide:
3
- - navigation
4
- ---
5
1
  # 3.0 Migration Guide
6
2
 
7
3
  In this document we describe the steps that should be taken to migrate from `orchestrator-core` v2 to v3.
@@ -0,0 +1,69 @@
1
+ # 4.0 Migration Guide
2
+
3
+ In this document we describe the steps that should be taken to migrate from `orchestrator-core` v3 to v4.
4
+
5
+ ## About 4.0
6
+
7
+ ### Removed caching of domain models
8
+
9
+ In this release we have removed the caching of domain models. Domain models will always be loaded from the database.
10
+
11
+ ### Added Target.VALIDATE
12
+
13
+ In this release, a new workflow target, `VALIDATE`, has been added
14
+ for [validation workflows](../architecture/application/workflow.md#validate).
15
+ Previously, the `SYSTEM` target was used for validation workflows, which implied that they were expected to run in a
16
+ system context. However, this was not appropriate for all validation workflows.
17
+ To address this, the new `VALIDATE` target has been introduced specifically for validation workflows. The `SYSTEM`
18
+ target is now reserved exclusively for system workflows.
19
+
20
+ The change of the `SYSTEM` target to `VALIDATE` is a breaking change, as it will break any workflows that are using the
21
+ `SYSTEM` target for validation workflows. You will need to update your workflows to use the `VALIDATE` target instead.
22
+
23
+ In the Steps section below we describe how to update your workflows to use the new `VALIDATE` target.
24
+
25
+ ## Steps
26
+
27
+ To use 4.0.0, all workflows must have run to completion. The `cache_domain_models` step no longer is part of the codebase
28
+ therefore `in flight` workflows will fail.
29
+
30
+ After running the migration `(2025-05-08_cdf8758831d4_add_is_task_to_workflow.py)`, the workflow table should look like this:
31
+
32
+ ```sql
33
+ | workflow_id | name | target | is_task | description | created_at | deleted_at |
34
+ |--------------------------------------|----------------------------|--------|---------|-------------------------------------------------------------------------|-----------------------------------|------------|
35
+ | ded79954-f16e-422b-a204-7770a59757e8 | modify_note | MODIFY | FALSE | Modify Note | 2025-05-01 09:57:28.033504 +00:00 | <null> |
36
+ | ca6a76ff-dd4e-4f66-9fb0-cee1878f0d20 | task_clean_up_tasks | SYSTEM | FALSE | Clean up old tasks | 2025-05-01 09:57:28.033504 +00:00 | <null> |
37
+ | 40058c3d-0c95-47f4-a75f-93719299c5be | task_resume_workflows | SYSTEM | FALSE | Resume all workflows that are stuck on tasks with the status 'waiting' | 2025-05-01 09:57:28.033504 +00:00 | <null> |
38
+ | 33b5520e-85d4-4ca1-8713-d26f7de5b7a5 | task_validate_products | SYSTEM | FALSE | Validate products | 2025-05-01 09:57:28.033504 +00:00 | <null> |
39
+ | 94d4889e-6bb6-4724-a9d2-f21696fe6f43 | task_validate_product_type | SYSTEM | FALSE | Validate all subscriptions of Product Type | 2025-05-01 09:57:28.033504 +00:00 | <null> |
40
+ | 0c4f3b8d-2a1e-4b5f-9a7c-6d8e0f1b2c3d | validate_some_thing | SYSTEM | FALSE | Validate The thing | 2025-05-01 09:57:28.033504 +00:00 | <null> |
41
+ | f4b0a2c1-5d3e-4c8f-9b6d-7a2e5f3b8c4e | validate_another_thing | SYSTEM | FALSE | Validate Another thing | 2025-05-01 09:57:28.033504 +00:00 | <null> |
42
+ ```
43
+
44
+ The `target` in this table is no longer valid for the `validate_some_thing` and `validate_another_thing`
45
+ workflows. You will need to update the `target` to `VALIDATE` for these workflows. You will also need to update the
46
+ is_task column to `TRUE` for all targets that are `SYSTEM` or `VALIDATE`. This is because the `is_task` column is used to
47
+ determine if a workflow is a task or not. If the `is_task` column is set to `FALSE`, the workflow will not be run as a task.
48
+ Tasks are `SYSTEM` or `VALIDATE` workflows that are run in the context of a system.
49
+
50
+ Example on how to update the `target` and `is_task` for all workflows that start with `validate_`:
51
+
52
+ ```sql
53
+ UPDATE workflow
54
+ SET target = 'VALIDATE', is_task = TRUE
55
+ WHERE name LIKE 'validate_%';
56
+ ```
57
+
58
+ Example on how to update the `target` and `is_task` for all workflows that are `SYSTEM` or `VALIDATE`:
59
+
60
+ ```sql
61
+ UPDATE workflow
62
+ SET is_task = TRUE
63
+ WHERE target IN ('SYSTEM', 'VALIDATE');
64
+ ```
65
+
66
+ This will update the `target` for all workflows that are `SYSTEM` or `VALIDATE` and set the `is_task` column to `TRUE`.
67
+
68
+ This is a breaking change, so you will need to test your workflows after making this change to ensure that they are
69
+ working as expected.
@@ -192,6 +192,7 @@ nav:
192
192
  - Migration guides:
193
193
  - 2.x: migration-guide/2.0.md
194
194
  - 3.x: migration-guide/3.0.md
195
+ - 4.x: migration-guide/4.0.md
195
196
 
196
197
  - Workshops:
197
198
  # - Beginner:
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "3.2.3"
16
+ __version__ = "4.0.0rc2"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -28,7 +28,6 @@ from orchestrator.domain.customer_description import (
28
28
  from orchestrator.schemas import SubscriptionDescriptionBaseSchema, SubscriptionDescriptionSchema
29
29
  from orchestrator.schemas.subscription_descriptions import UpdateSubscriptionDescriptionSchema
30
30
  from orchestrator.utils.errors import StaleDataError
31
- from orchestrator.utils.redis import delete_from_redis
32
31
 
33
32
  router = APIRouter()
34
33
 
@@ -55,7 +54,6 @@ def delete_subscription_customer_descriptions(_id: UUID) -> None:
55
54
  description = db.session.get(SubscriptionCustomerDescriptionTable, _id)
56
55
  if description:
57
56
  delete(SubscriptionCustomerDescriptionTable, _id)
58
- delete_from_redis(description.subscription_id)
59
57
 
60
58
 
61
59
  @router.get("/{_id}", response_model=SubscriptionDescriptionSchema)
@@ -63,24 +63,28 @@ new_workflows = [
63
63
  {
64
64
  "name": "create_{{ product.variable }}",
65
65
  "target": Target.CREATE,
66
+ "is_task": False,
66
67
  "description": "Create {{ product.name }}",
67
68
  "product_type": "{{ product.type }}",
68
69
  },
69
70
  {
70
71
  "name": "modify_{{ product.variable }}",
71
72
  "target": Target.MODIFY,
73
+ "is_task": False,
72
74
  "description": "Modify {{ product.name }}",
73
75
  "product_type": "{{ product.type }}",
74
76
  },
75
77
  {
76
78
  "name": "terminate_{{ product.variable }}",
77
79
  "target": Target.TERMINATE,
80
+ "is_task": False,
78
81
  "description": "Terminate {{ product.name }}",
79
82
  "product_type": "{{ product.type }}",
80
83
  },
81
84
  {
82
85
  "name": "validate_{{ product.variable }}",
83
- "target": Target.SYSTEM,
86
+ "target": Target.VALIDATE,
87
+ "is_task": True,
84
88
  "description": "Validate {{ product.name }}",
85
89
  "product_type": "{{ product.type }}",
86
90
  },
@@ -150,22 +150,22 @@ def create_tasks_migration_wizard() -> tuple[list[dict], list[dict]]:
150
150
  - list of task items to add in the migration
151
151
  - list of task items to delete in the migration
152
152
  """
153
- database_tasks = {
154
- task.name: task for task in list(db.session.scalars(select(WorkflowTable))) if task.target == Target.SYSTEM
155
- }
153
+ database_tasks = {task.name: task for task in list(db.session.scalars(select(WorkflowTable))) if task.is_task}
156
154
  registered_wf_instances = {
157
155
  task: cast(Workflow, get_workflow(task)) for task in orchestrator.workflows.ALL_WORKFLOWS.keys()
158
156
  }
159
157
 
158
+ is_task = [Target.SYSTEM, Target.VALIDATE]
159
+
160
160
  registered_tasks = dict(
161
161
  filter(
162
- lambda task: task[1].target == Target.SYSTEM and task[0] in database_tasks.keys(),
162
+ lambda task: task[1].target in is_task and task[0] in database_tasks.keys(),
163
163
  registered_wf_instances.items(),
164
164
  )
165
165
  )
166
166
  available_tasks = dict(
167
167
  filter(
168
- lambda task: task[1].target == Target.SYSTEM and task[0] not in database_tasks.keys(),
168
+ lambda task: task[1].target in is_task and task[0] not in database_tasks.keys(),
169
169
  registered_wf_instances.items(),
170
170
  )
171
171
  )
@@ -11,7 +11,6 @@ import orchestrator.workflows
11
11
  from orchestrator.cli.helpers.input_helpers import _enumerate_menu_keys, _prompt_user_menu, get_user_input
12
12
  from orchestrator.cli.helpers.print_helpers import COLOR, noqa_print, print_fmt, str_fmt
13
13
  from orchestrator.db import ProductTable, WorkflowTable, db
14
- from orchestrator.targets import Target
15
14
  from orchestrator.workflows import LazyWorkflowInstance, get_workflow
16
15
 
17
16
  # Workflows are registered via migrations with product type. For every product with the given product_type, there will be an entry in products_workflows.
@@ -183,7 +182,7 @@ def create_workflows_migration_wizard() -> tuple[list[dict], list[dict]]:
183
182
  """
184
183
  database_workflows = list(db.session.scalars(select(WorkflowTable)))
185
184
  registered_workflows = orchestrator.workflows.ALL_WORKFLOWS
186
- system_workflow_names = {wf.name for wf in database_workflows if wf.target == Target.SYSTEM}
185
+ system_workflow_names = {wf.name for wf in database_workflows if wf.is_task}
187
186
  registered_non_system_workflows = {k: v for k, v in registered_workflows.items() if k not in system_workflow_names}
188
187
 
189
188
  unregistered_workflows = [wf for wf in database_workflows if wf.name not in registered_workflows.keys()]
@@ -400,7 +400,7 @@ class WorkflowTable(BaseModel):
400
400
  workflow_id = mapped_column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
401
401
  name = mapped_column(String(), nullable=False, unique=True)
402
402
  target = mapped_column(String(), nullable=False)
403
- description = mapped_column(Text(), nullable=True)
403
+ description = mapped_column(Text(), nullable=False)
404
404
  created_at = mapped_column(UtcTimestamp, nullable=False, server_default=text("current_timestamp()"))
405
405
  deleted_at = mapped_column(UtcTimestamp, deferred=True)
406
406
 
@@ -412,6 +412,8 @@ class WorkflowTable(BaseModel):
412
412
  )
413
413
  processes = relationship("ProcessTable", cascade="all, delete-orphan", back_populates="workflow")
414
414
 
415
+ is_task = mapped_column(Boolean, nullable=False, server_default=text("false"))
416
+
415
417
  @staticmethod
416
418
  def select() -> Select:
417
419
  return (
@@ -1294,27 +1294,13 @@ class SubscriptionModel(DomainModel):
1294
1294
  # Some common functions shared by from_other_product and from_subscription
1295
1295
  @classmethod
1296
1296
  def _get_subscription(cls: type[S], subscription_id: UUID | UUIDstr) -> SubscriptionTable | None:
1297
- from orchestrator.settings import app_settings
1298
1297
 
1299
1298
  if not isinstance(subscription_id, UUID | UUIDstr):
1300
1299
  raise TypeError(f"subscription_id is of type {type(subscription_id)} instead of UUID | UUIDstr")
1301
1300
 
1302
- if app_settings.ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS:
1303
- # TODO #900 remove toggle and make this path the default
1304
- loaders = [
1305
- joinedload(SubscriptionTable.product).selectinload(ProductTable.fixed_inputs),
1306
- ]
1307
-
1308
- else:
1309
- loaders = [
1310
- selectinload(SubscriptionTable.instances)
1311
- .joinedload(SubscriptionInstanceTable.product_block)
1312
- .selectinload(ProductBlockTable.resource_types),
1313
- selectinload(SubscriptionTable.instances).selectinload(
1314
- SubscriptionInstanceTable.in_use_by_block_relations
1315
- ),
1316
- selectinload(SubscriptionTable.instances).selectinload(SubscriptionInstanceTable.values),
1317
- ]
1301
+ loaders = [
1302
+ joinedload(SubscriptionTable.product).selectinload(ProductTable.fixed_inputs),
1303
+ ]
1318
1304
 
1319
1305
  return db.session.get(SubscriptionTable, subscription_id, options=loaders)
1320
1306
 
@@ -1394,7 +1380,6 @@ class SubscriptionModel(DomainModel):
1394
1380
  def from_subscription(cls: type[S], subscription_id: UUID | UUIDstr) -> S:
1395
1381
  """Use a subscription_id to return required fields of an existing subscription."""
1396
1382
  from orchestrator.domain.context_cache import get_from_cache, store_in_cache
1397
- from orchestrator.settings import app_settings
1398
1383
 
1399
1384
  if cached_model := get_from_cache(subscription_id):
1400
1385
  return cast(S, cached_model)
@@ -1421,12 +1406,7 @@ class SubscriptionModel(DomainModel):
1421
1406
 
1422
1407
  fixed_inputs = {fi.name: fi.value for fi in subscription.product.fixed_inputs}
1423
1408
 
1424
- instances: dict[str, Any]
1425
- if app_settings.ENABLE_SUBSCRIPTION_MODEL_OPTIMIZATIONS:
1426
- # TODO #900 remove toggle and make this path the default
1427
- instances = cls._load_root_instances(subscription_id)
1428
- else:
1429
- instances = cls._load_instances(subscription.instances, status, match_domain_attr=False)
1409
+ instances = cls._load_root_instances(subscription_id)
1430
1410
 
1431
1411
  try:
1432
1412
  model = cls(
@@ -21,7 +21,6 @@ from sqlalchemy import select
21
21
  from orchestrator.api.models import delete
22
22
  from orchestrator.db import SubscriptionCustomerDescriptionTable, db
23
23
  from orchestrator.utils.errors import StaleDataError
24
- from orchestrator.utils.redis import delete_subscription_from_redis
25
24
  from orchestrator.utils.validate_data_version import validate_data_version
26
25
  from orchestrator.websocket import invalidate_subscription_cache
27
26
 
@@ -38,7 +37,6 @@ def get_customer_description_by_customer_subscription(
38
37
  return db.session.scalars(stmt).one_or_none()
39
38
 
40
39
 
41
- @delete_subscription_from_redis()
42
40
  async def create_subscription_customer_description(
43
41
  customer_id: str, subscription_id: UUID, description: str
44
42
  ) -> SubscriptionCustomerDescriptionTable:
@@ -53,7 +51,6 @@ async def create_subscription_customer_description(
53
51
  return customer_description
54
52
 
55
53
 
56
- @delete_subscription_from_redis()
57
54
  async def update_subscription_customer_description(
58
55
  customer_description: SubscriptionCustomerDescriptionTable,
59
56
  description: str,
@@ -70,7 +67,6 @@ async def update_subscription_customer_description(
70
67
  return customer_description
71
68
 
72
69
 
73
- @delete_subscription_from_redis()
74
70
  async def delete_subscription_customer_description_by_customer_subscription(
75
71
  customer_id: str, subscription_id: UUID
76
72
  ) -> SubscriptionCustomerDescriptionTable | None:
@@ -60,7 +60,7 @@ async def resolve_remove_customer_description(
60
60
  )
61
61
  if not description:
62
62
  return NotFoundError(message="Customer description not found")
63
- return CustomerDescription.from_pydantic(description)
63
+ return CustomerDescription.from_pydantic(description) # type: ignore
64
64
 
65
65
 
66
66
  @strawberry.type(description="Customer subscription description mutations")
@@ -135,18 +135,21 @@ def create_workflow(conn: sa.engine.Connection, workflow: dict) -> None:
135
135
  >>> workflow = {
136
136
  "name": "workflow_name",
137
137
  "target": "SYSTEM",
138
+ "is_task": False,
138
139
  "description": "workflow description",
139
140
  "product_type": "product_type",
140
141
  }
141
142
  >>> create_workflow(conn, workflow)
142
143
  """
144
+ if not workflow.get("is_task", False):
145
+ workflow["is_task"] = False
143
146
 
144
147
  conn.execute(
145
148
  sa.text(
146
149
  """
147
150
  WITH new_workflow AS (
148
- INSERT INTO workflows(name, target, description)
149
- VALUES (:name, :target, :description)
151
+ INSERT INTO workflows(name, target, is_task, description)
152
+ VALUES (:name, :target, :is_task, :description)
150
153
  ON CONFLICT DO NOTHING
151
154
  RETURNING workflow_id)
152
155
  INSERT
@@ -184,8 +187,8 @@ def create_task(conn: sa.engine.Connection, task: dict) -> None:
184
187
  conn.execute(
185
188
  sa.text(
186
189
  """
187
- INSERT INTO workflows(name, target, description)
188
- VALUES (:name, 'SYSTEM', :description)
190
+ INSERT INTO workflows(name, target, is_task, description)
191
+ VALUES (:name, 'SYSTEM', TRUE, :description)
189
192
  ON CONFLICT DO NOTHING
190
193
  RETURNING workflow_id
191
194
  """
@@ -206,6 +209,7 @@ def create_workflows(conn: sa.engine.Connection, new: dict) -> None:
206
209
  "workflow_name": {
207
210
  "workflow_id": "f2702074-3203-454c-b298-6dfa7675423d",
208
211
  "target": "CREATE",
212
+ "is_task": False,
209
213
  "description": "Workflow description",
210
214
  "tag": "ProductBlockName1",
211
215
  "search_phrase": "Search Phrase%",
@@ -214,12 +218,16 @@ def create_workflows(conn: sa.engine.Connection, new: dict) -> None:
214
218
  """
215
219
  for name, workflow in new.items():
216
220
  workflow["name"] = name
221
+
222
+ if not workflow.get("is_task", False):
223
+ workflow["is_task"] = False
224
+
217
225
  conn.execute(
218
226
  sa.text(
219
227
  """
220
228
  WITH new_workflow AS (
221
- INSERT INTO workflows(workflow_id, name, target, description)
222
- VALUES (:workflow_id, :name, :target, :description)
229
+ INSERT INTO workflows(workflow_id, name, target, is_task, description)
230
+ VALUES (:workflow_id, :name, :target, :is_task, :description)
223
231
  RETURNING workflow_id)
224
232
  INSERT
225
233
  INTO products_workflows (product_id, workflow_id)
@@ -0,0 +1,33 @@
1
+ """Make workflow description mandatory.
2
+
3
+ Revision ID: 68d14db1b8da
4
+ Revises: bac6be6f2b4f
5
+ Create Date: 2025-02-20 16:39:34.889953
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+ from structlog import get_logger
12
+
13
+ logger = get_logger(__name__)
14
+
15
+ # revision identifiers, used by Alembic.
16
+ revision = "68d14db1b8da"
17
+ down_revision = "fc5c993a4b4a"
18
+ branch_labels = None
19
+ depends_on = None
20
+
21
+
22
+ def upgrade() -> None:
23
+ try:
24
+ op.alter_column("workflows", "description", existing_type=sa.TEXT(), nullable=False)
25
+ except sa.exc.IntegrityError:
26
+ logger.error(
27
+ "Unable to execute migrations due to missing descriptions in workflow table, please create a migration to backfill this column."
28
+ )
29
+ raise
30
+
31
+
32
+ def downgrade() -> None:
33
+ op.alter_column("workflows", "description", existing_type=sa.TEXT(), nullable=True)
@@ -0,0 +1,28 @@
1
+ """Add is_task to workflow.
2
+
3
+ Revision ID: 161918133bec
4
+ Revises: 68d14db1b8da
5
+ Create Date: 2025-05-08 11:25:51.966410
6
+
7
+ """
8
+
9
+ import sqlalchemy as sa
10
+ from alembic import op
11
+
12
+ # revision identifiers, used by Alembic.
13
+ revision = "161918133bec"
14
+ down_revision = "68d14db1b8da"
15
+ branch_labels = None
16
+ depends_on = None
17
+
18
+
19
+ def upgrade() -> None:
20
+ # ### commands auto generated by Alembic - please adjust! ###
21
+ op.add_column("workflows", sa.Column("is_task", sa.Boolean(), server_default=sa.text("false"), nullable=False))
22
+ # ### end Alembic commands ###
23
+
24
+
25
+ def downgrade() -> None:
26
+ # ### commands auto generated by Alembic - please adjust! ###
27
+ op.drop_column("workflows", "is_task")
28
+ # ### end Alembic commands ###
@@ -22,7 +22,7 @@ from orchestrator.services.subscriptions import (
22
22
  get_subscriptions_on_product_table_in_sync,
23
23
  )
24
24
  from orchestrator.services.workflows import (
25
- get_system_product_workflows_for_subscription,
25
+ get_validation_product_workflows_for_subscription,
26
26
  start_validation_workflow_for_workflows,
27
27
  )
28
28
  from orchestrator.settings import app_settings
@@ -42,9 +42,9 @@ def validate_subscriptions() -> None:
42
42
  subscriptions = get_subscriptions_on_product_table_in_sync()
43
43
 
44
44
  for subscription in subscriptions:
45
- system_product_workflows = get_system_product_workflows_for_subscription(subscription)
45
+ validation_product_workflows = get_validation_product_workflows_for_subscription(subscription)
46
46
 
47
- if not system_product_workflows:
47
+ if not validation_product_workflows:
48
48
  logger.warning(
49
49
  "SubscriptionTable has no validation workflow",
50
50
  subscription=subscription,
@@ -52,4 +52,4 @@ def validate_subscriptions() -> None:
52
52
  )
53
53
  break
54
54
 
55
- start_validation_workflow_for_workflows(subscription=subscription, workflows=system_product_workflows)
55
+ start_validation_workflow_for_workflows(subscription=subscription, workflows=validation_product_workflows)
@@ -24,6 +24,7 @@ from orchestrator.targets import Target
24
24
  class WorkflowBaseSchema(OrchestratorBaseModel):
25
25
  name: str
26
26
  target: Target
27
+ is_task: bool = False
27
28
  description: str | None = None
28
29
  created_at: datetime | None = None
29
30
 
@@ -24,7 +24,7 @@ from orchestrator.api.error_handling import raise_status
24
24
  from orchestrator.db import ProcessTable, db
25
25
  from orchestrator.services.input_state import store_input_state
26
26
  from orchestrator.services.processes import create_process, delete_process
27
- from orchestrator.targets import Target
27
+ from orchestrator.services.workflows import get_workflow_by_name
28
28
  from orchestrator.workflows import get_workflow
29
29
  from pydantic_forms.types import State
30
30
 
@@ -51,7 +51,11 @@ def _celery_start_process(
51
51
  if not workflow:
52
52
  raise_status(HTTPStatus.NOT_FOUND, "Workflow does not exist")
53
53
 
54
- task_name = NEW_TASK if workflow.target == Target.SYSTEM else NEW_WORKFLOW
54
+ wf_table = get_workflow_by_name(workflow.name)
55
+ if not wf_table:
56
+ raise_status(HTTPStatus.NOT_FOUND, "Workflow in Database does not exist")
57
+
58
+ task_name = NEW_TASK if wf_table.is_task else NEW_WORKFLOW
55
59
  trigger_task = get_celery_task(task_name)
56
60
  pstat = create_process(workflow_key, user_inputs, user)
57
61
  try:
@@ -80,7 +84,11 @@ def _celery_resume_process(
80
84
  last_process_status = process.last_status
81
85
  workflow = pstat.workflow
82
86
 
83
- task_name = RESUME_TASK if workflow.target == Target.SYSTEM else RESUME_WORKFLOW
87
+ wf_table = get_workflow_by_name(workflow.name)
88
+ if not workflow or not wf_table:
89
+ raise_status(HTTPStatus.NOT_FOUND, "Workflow does not exist")
90
+
91
+ task_name = RESUME_TASK if wf_table.is_task else RESUME_WORKFLOW
84
92
  trigger_task = get_celery_task(task_name)
85
93
 
86
94
  user_inputs = user_inputs or [{}]
@@ -34,7 +34,6 @@ from orchestrator.services.input_state import store_input_state
34
34
  from orchestrator.services.settings import get_engine_settings_for_update
35
35
  from orchestrator.services.workflows import get_workflow_by_name
36
36
  from orchestrator.settings import ExecutorType, app_settings
37
- from orchestrator.targets import Target
38
37
  from orchestrator.types import BroadcastFunc
39
38
  from orchestrator.utils.datetime import nowtz
40
39
  from orchestrator.utils.errors import error_state_to_dict
@@ -108,7 +107,7 @@ def _db_create_process(stat: ProcessStat) -> None:
108
107
  workflow_id=wf_table.workflow_id,
109
108
  last_status=ProcessStatus.CREATED,
110
109
  created_by=stat.current_user,
111
- is_task=stat.workflow.target == Target.SYSTEM,
110
+ is_task=wf_table.is_task,
112
111
  )
113
112
  db.session.add(p)
114
113
  db.session.commit()
@@ -441,6 +440,7 @@ def create_process(
441
440
  }
442
441
 
443
442
  try:
443
+
444
444
  state = post_form(workflow.initial_input_form, initial_state, user_inputs)
445
445
  except FormValidationError:
446
446
  logger.exception("Validation errors", user_inputs=user_inputs)