orchestrator-core 3.2.3__tar.gz → 4.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (674) hide show
  1. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.bumpversion.cfg +2 -2
  2. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/NOTICE +2 -1
  3. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/PKG-INFO +9 -8
  4. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/workflow.md +8 -2
  5. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/base.md +43 -28
  6. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/orchestration-ui.md +28 -9
  7. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/prepare-source-folder.md +4 -5
  8. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/migration-guide/2.0.md +0 -4
  9. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/migration-guide/3.0.md +0 -4
  10. orchestrator_core-4.0.0/docs/migration-guide/4.0.md +69 -0
  11. orchestrator_core-4.0.0/docs/reference-docs/metrics.md +45 -0
  12. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/mkdocs.yml +2 -1
  13. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/__init__.py +1 -1
  14. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/settings.py +3 -13
  15. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -2
  16. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/subscriptions.py +1 -0
  17. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/app.py +10 -1
  18. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/new_product_migration.j2 +5 -1
  19. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migrate_tasks.py +5 -5
  20. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migrate_workflows.py +1 -2
  21. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/models.py +3 -1
  22. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/base.py +4 -24
  23. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/customer_description.py +0 -4
  24. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/mutations/customer_description.py +1 -1
  25. orchestrator_core-4.0.0/orchestrator/metrics/__init__.py +3 -0
  26. orchestrator_core-4.0.0/orchestrator/metrics/engine.py +49 -0
  27. orchestrator_core-4.0.0/orchestrator/metrics/init.py +14 -0
  28. orchestrator_core-4.0.0/orchestrator/metrics/processes.py +147 -0
  29. orchestrator_core-4.0.0/orchestrator/metrics/subscriptions.py +93 -0
  30. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/helpers.py +14 -6
  31. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/templates/alembic.ini.j2 +1 -2
  32. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/templates/env.py.j2 +4 -7
  33. orchestrator_core-4.0.0/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +33 -0
  34. orchestrator_core-4.0.0/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +28 -0
  35. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/validate_subscriptions.py +4 -4
  36. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/workflow.py +3 -1
  37. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/celery.py +13 -5
  38. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/processes.py +2 -2
  39. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/settings.py +10 -1
  40. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/subscriptions.py +10 -23
  41. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/workflows.py +8 -4
  42. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/settings.py +1 -4
  43. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/targets.py +1 -0
  44. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/get_subscription_dict.py +0 -4
  45. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/redis.py +1 -67
  46. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/modify_note.py +3 -11
  47. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/steps.py +2 -86
  48. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/validate_product_type.py +2 -2
  49. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/validate_products.py +3 -6
  50. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/utils.py +3 -23
  51. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/pyproject.toml +8 -7
  52. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_subscriptions.py +4 -58
  53. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/env.py +4 -7
  54. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +5 -1
  55. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +5 -1
  56. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +5 -1
  57. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/conftest.py +2 -2
  58. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/workflows.py +8 -1
  59. orchestrator_core-4.0.0/test/unit_tests/metrics/conftest.py +27 -0
  60. orchestrator_core-4.0.0/test/unit_tests/metrics/test_engine_metrics.py +18 -0
  61. orchestrator_core-4.0.0/test/unit_tests/metrics/test_process_metrics.py +27 -0
  62. orchestrator_core-4.0.0/test/unit_tests/metrics/test_subscription_metrics.py +60 -0
  63. orchestrator_core-4.0.0/test/unit_tests/utils/get_subscription_dict.py +11 -0
  64. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/__init__.py +3 -1
  65. orchestrator_core-4.0.0/test/unit_tests/workflows/tasks/__init__.py +0 -0
  66. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +7 -3
  67. orchestrator_core-3.2.3/test/unit_tests/api/test_caching.py +0 -120
  68. orchestrator_core-3.2.3/test/unit_tests/utils/get_subscription_dict.py +0 -38
  69. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.coveragerc +0 -0
  70. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  71. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  72. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/dependabot.yml +0 -0
  73. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/README.md +0 -0
  74. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/build-push-container.yml +0 -0
  75. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/changelog.yml +0 -0
  76. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/codeql-analysis.yml +0 -0
  77. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/gh-pages.yml +0 -0
  78. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/issues.yml +0 -0
  79. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/publish-package.yml +0 -0
  80. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/run-codspeed-tests.yml +0 -0
  81. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/run-linting-tests.yml +0 -0
  82. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/run-unit-tests.yml +0 -0
  83. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/scheduled-build.yml +0 -0
  84. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.gitignore +0 -0
  85. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.pre-commit-config.yaml +0 -0
  86. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.stignore +0 -0
  87. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/CHANGELOG.md +0 -0
  88. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/Dockerfile +0 -0
  89. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/LICENSE +0 -0
  90. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/README.md +0 -0
  91. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/codecov.yml +0 -0
  92. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/domainmodels.md +0 -0
  93. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/forms-frontend.md +0 -0
  94. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/tasks.md +0 -0
  95. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/framework.md +0 -0
  96. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/img/base-orchestrator-setup.png +0 -0
  97. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
  98. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
  99. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
  100. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
  101. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/philosophy.md +0 -0
  102. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/backfilling.md +0 -0
  103. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/context.md +0 -0
  104. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/imports.md +0 -0
  105. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/introduction.md +0 -0
  106. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/ip_static.md +0 -0
  107. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/ip_static.png +0 -0
  108. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
  109. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
  110. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_vpn.md +0 -0
  111. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_vpn.png +0 -0
  112. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/modelling.md +0 -0
  113. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/node.md +0 -0
  114. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/node.png +0 -0
  115. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/port.md +0 -0
  116. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/port.png +0 -0
  117. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/product_block_graph.md +0 -0
  118. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/product_block_graph.png +0 -0
  119. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/standards.md +0 -0
  120. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/terminology.md +0 -0
  121. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/tldr.md +0 -0
  122. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/contributing/development.md +0 -0
  123. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/contributing/guidelines.md +0 -0
  124. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/contributing/testing.md +0 -0
  125. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/css/custom.css +0 -0
  126. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/css/style.css +0 -0
  127. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/css/termynal.css +0 -0
  128. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/docker.md +0 -0
  129. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/versions.md +0 -0
  130. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/img/WFO-Emblem-White.png +0 -0
  131. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/img/favicon.ico +0 -0
  132. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/index.md +0 -0
  133. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/js/custom.js +0 -0
  134. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/js/termynal.js +0 -0
  135. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/api.md +0 -0
  136. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/app/app.md +0 -0
  137. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/app/scaling.md +0 -0
  138. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
  139. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/cli.md +0 -0
  140. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/database.md +0 -0
  141. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/generator.md +0 -0
  142. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/instantiating.md +0 -0
  143. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/model_attributes.md +0 -0
  144. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/overview.md +0 -0
  145. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/product_blocks.md +0 -0
  146. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/product_types.md +0 -0
  147. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/properties.md +0 -0
  148. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
  149. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/type_casting.md +0 -0
  150. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/union_types.md +0 -0
  151. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/validation.md +0 -0
  152. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/forms.md +0 -0
  153. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/graphql.md +0 -0
  154. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/python.md +0 -0
  155. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/search.md +0 -0
  156. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/search_overview.png +0 -0
  157. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/serialization.md +0 -0
  158. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/tasks.md +0 -0
  159. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/tests.md +0 -0
  160. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/tldr.md +0 -0
  161. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/websockets.md +0 -0
  162. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/workflows/callbacks.md +0 -0
  163. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
  164. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/workflows/workflow-steps.md +0 -0
  165. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/bootstrap.md +0 -0
  166. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/create-your-own.md +0 -0
  167. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/docker-installation.md +0 -0
  168. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/domain-models.md +0 -0
  169. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/execute-workflows.md +0 -0
  170. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/generator.md +0 -0
  171. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/l2_point_to_point.png +0 -0
  172. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-create.md +0 -0
  173. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-modify.md +0 -0
  174. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-terminate.md +0 -0
  175. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-validate.md +0 -0
  176. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/overview.md +0 -0
  177. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/scenario.md +0 -0
  178. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/workflow-basics.md +0 -0
  179. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/workflow-introduction.md +0 -0
  180. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/create-user-group.md +0 -0
  181. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/create-user.md +0 -0
  182. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/database-migration.md +0 -0
  183. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/debian.md +0 -0
  184. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/docker.md +0 -0
  185. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/domain-models.md +0 -0
  186. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/explore.md +0 -0
  187. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/input-forms.md +0 -0
  188. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/macos.md +0 -0
  189. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/modify-user-group.md +0 -0
  190. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/modify-user.md +0 -0
  191. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/register-workflows.md +0 -0
  192. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/start-applications.md +0 -0
  193. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/terminate-user-group.md +0 -0
  194. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/terminate-user.md +0 -0
  195. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/workflow-introduction.md +0 -0
  196. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/workshop-overview.md +0 -0
  197. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/Software-topology.drawio.png +0 -0
  198. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/clab_topology.png +0 -0
  199. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/metadata_products.png +0 -0
  200. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/netbox_devices_active.png +0 -0
  201. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/subscriptions.png +0 -0
  202. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/topology.drawio.png +0 -0
  203. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/includes/abbreviations.md +0 -0
  204. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/nitpick-style.toml +0 -0
  205. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/__init__.py +0 -0
  206. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/__init__.py +0 -0
  207. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/api.py +0 -0
  208. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
  209. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/health.py +0 -0
  210. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
  211. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
  212. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/products.py +0 -0
  213. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
  214. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
  215. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/user.py +0 -0
  216. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
  217. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
  218. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/error_handling.py +0 -0
  219. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/helpers.py +0 -0
  220. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/models.py +0 -0
  221. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/__init__.py +0 -0
  222. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/database.py +0 -0
  223. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
  224. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
  225. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
  226. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
  227. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
  228. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
  229. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
  230. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generate.py +0 -0
  231. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/__init__.py +0 -0
  232. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/README +0 -0
  233. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
  234. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
  235. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
  236. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
  237. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
  238. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
  239. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
  240. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
  241. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
  242. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/__init__.py +0 -0
  243. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/enums.py +0 -0
  244. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/helpers.py +0 -0
  245. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/migration.py +0 -0
  246. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/product.py +0 -0
  247. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/product_block.py +0 -0
  248. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/settings.py +0 -0
  249. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/translations.py +0 -0
  250. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/unittest.py +0 -0
  251. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/validations.py +0 -0
  252. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/workflow.py +0 -0
  253. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
  254. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
  255. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
  256. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
  257. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
  258. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
  259. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
  260. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
  261. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
  262. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
  263. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
  264. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
  265. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/enums.j2 +0 -0
  266. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
  267. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
  268. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/macros.j2 +0 -0
  269. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
  270. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/product.j2 +0 -0
  271. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
  272. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
  273. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
  274. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
  275. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
  276. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
  277. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
  278. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
  279. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
  280. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
  281. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
  282. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/helpers/__init__.py +0 -0
  283. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/helpers/input_helpers.py +0 -0
  284. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/helpers/print_helpers.py +0 -0
  285. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/main.py +0 -0
  286. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migrate_domain_models.py +0 -0
  287. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migration_helpers.py +0 -0
  288. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/scheduler.py +0 -0
  289. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/config/__init__.py +0 -0
  290. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/config/assignee.py +0 -0
  291. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/__init__.py +0 -0
  292. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/database.py +0 -0
  293. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/__init__.py +0 -0
  294. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/filters.py +0 -0
  295. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/process.py +0 -0
  296. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/product.py +0 -0
  297. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/product_block.py +0 -0
  298. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/resource_type.py +0 -0
  299. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/search_filters/__init__.py +0 -0
  300. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
  301. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/subscription.py +0 -0
  302. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/workflow.py +0 -0
  303. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/helpers.py +0 -0
  304. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/listeners.py +0 -0
  305. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/loaders.py +0 -0
  306. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/queries/__init__.py +0 -0
  307. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/queries/subscription.py +0 -0
  308. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/queries/subscription_instance.py +0 -0
  309. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/range/__init__.py +0 -0
  310. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/range/range.py +0 -0
  311. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/__init__.py +0 -0
  312. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/process.py +0 -0
  313. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/product.py +0 -0
  314. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/product_block.py +0 -0
  315. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/resource_type.py +0 -0
  316. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/sorting.py +0 -0
  317. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/subscription.py +0 -0
  318. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/workflow.py +0 -0
  319. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/__init__.py +0 -0
  320. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/populator.py +0 -0
  321. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/__init__.py +0 -0
  322. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/migrate_20.py +0 -0
  323. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/migrate_30.py +0 -0
  324. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/shared.py +0 -0
  325. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/__init__.py +0 -0
  326. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/distlock_manager.py +0 -0
  327. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/managers/__init__.py +0 -0
  328. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
  329. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
  330. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/__init__.py +0 -0
  331. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/context_cache.py +0 -0
  332. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/helpers.py +0 -0
  333. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/lifecycle.py +0 -0
  334. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/subscription_instance_transform.py +0 -0
  335. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/exception_handlers.py +0 -0
  336. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/__init__.py +0 -0
  337. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/__init__.py +0 -0
  338. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/customer_contact_list.py +0 -0
  339. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/customer_id.py +0 -0
  340. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/display_subscription.py +0 -0
  341. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/network_type_validators.py +0 -0
  342. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/product_id.py +0 -0
  343. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/__init__.py +0 -0
  344. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/autoregistration.py +0 -0
  345. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/extensions/__init__.py +0 -0
  346. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/extensions/model_cache.py +0 -0
  347. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/extensions/stats.py +0 -0
  348. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/loaders/__init__.py +0 -0
  349. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/loaders/subscriptions.py +0 -0
  350. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/mutations/start_process.py +0 -0
  351. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/pagination.py +0 -0
  352. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/__init__.py +0 -0
  353. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/customer.py +0 -0
  354. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/helpers.py +0 -0
  355. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/process.py +0 -0
  356. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/product.py +0 -0
  357. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/product_block.py +0 -0
  358. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/resource_type.py +0 -0
  359. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/settings.py +0 -0
  360. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/subscription.py +0 -0
  361. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/version.py +0 -0
  362. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/workflow.py +0 -0
  363. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schema.py +0 -0
  364. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/__init__.py +0 -0
  365. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/customer.py +0 -0
  366. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/customer_description.py +0 -0
  367. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/errors.py +0 -0
  368. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/fixed_input.py +0 -0
  369. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/helpers.py +0 -0
  370. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/process.py +0 -0
  371. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/product.py +0 -0
  372. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/product_block.py +0 -0
  373. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/resource_type.py +0 -0
  374. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/settings.py +0 -0
  375. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
  376. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/subscription.py +0 -0
  377. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/version.py +0 -0
  378. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/workflow.py +0 -0
  379. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/types.py +0 -0
  380. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/__init__.py +0 -0
  381. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
  382. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
  383. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
  384. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
  385. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
  386. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
  387. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/override_class.py +0 -0
  388. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
  389. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/log_config.py +0 -0
  390. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/README +0 -0
  391. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/alembic.ini +0 -0
  392. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/env.py +0 -0
  393. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/script.py.mako +0 -0
  394. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
  395. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
  396. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
  397. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
  398. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
  399. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
  400. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
  401. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
  402. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
  403. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
  404. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
  405. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
  406. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
  407. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
  408. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
  409. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
  410. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
  411. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
  412. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
  413. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
  414. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
  415. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
  416. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
  417. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
  418. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
  419. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/py.typed +0 -0
  420. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/__init__.py +0 -0
  421. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/resume_workflows.py +0 -0
  422. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/scheduling.py +0 -0
  423. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/task_vacuum.py +0 -0
  424. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/validate_products.py +0 -0
  425. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/__init__.py +0 -0
  426. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/base.py +0 -0
  427. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/engine_settings.py +0 -0
  428. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/fixed_input.py +0 -0
  429. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/problem_detail.py +0 -0
  430. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/process.py +0 -0
  431. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/product.py +0 -0
  432. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/product_block.py +0 -0
  433. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/resource_type.py +0 -0
  434. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/subscription.py +0 -0
  435. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/subscription_descriptions.py +0 -0
  436. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/security.py +0 -0
  437. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/__init__.py +0 -0
  438. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/fixed_inputs.py +0 -0
  439. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/input_state.py +0 -0
  440. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/process_broadcast_thread.py +0 -0
  441. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/products.py +0 -0
  442. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/resource_types.py +0 -0
  443. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/subscription_relations.py +0 -0
  444. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/tasks.py +0 -0
  445. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/translations.py +0 -0
  446. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/types.py +0 -0
  447. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/__init__.py +0 -0
  448. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/crypt.py +0 -0
  449. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/datetime.py +0 -0
  450. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/deprecation_logger.py +0 -0
  451. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/docs.py +0 -0
  452. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/enrich_process.py +0 -0
  453. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/errors.py +0 -0
  454. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/fixed_inputs.py +0 -0
  455. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/functional.py +0 -0
  456. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/get_updated_properties.py +0 -0
  457. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/helpers.py +0 -0
  458. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/json.py +0 -0
  459. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/redis_client.py +0 -0
  460. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/search_query.py +0 -0
  461. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/state.py +0 -0
  462. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/strings.py +0 -0
  463. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/validate_data_version.py +0 -0
  464. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/version.py +0 -0
  465. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/__init__.py +0 -0
  466. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
  467. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
  468. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/websocket_manager.py +0 -0
  469. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflow.py +0 -0
  470. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/__init__.py +0 -0
  471. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/removed_workflow.py +0 -0
  472. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/__init__.py +0 -0
  473. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
  474. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
  475. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/translations/en-GB.json +0 -0
  476. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/setup.cfg +0 -0
  477. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/setup.py +0 -0
  478. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/__init__.py +0 -0
  479. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/__init__.py +0 -0
  480. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/conftest.py +0 -0
  481. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
  482. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
  483. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
  484. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
  485. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
  486. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
  487. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
  488. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
  489. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
  490. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
  491. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/test_test_product.py +0 -0
  492. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/__init__.py +0 -0
  493. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/__init__.py +0 -0
  494. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_health.py +0 -0
  495. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_helpers.py +0 -0
  496. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_models.py +0 -0
  497. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_processes.py +0 -0
  498. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_processes_ws.py +0 -0
  499. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_product_blocks.py +0 -0
  500. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_products.py +0 -0
  501. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_resource_types.py +0 -0
  502. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_settings.py +0 -0
  503. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
  504. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_workflows.py +0 -0
  505. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_ws.py +0 -0
  506. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/__init__.py +0 -0
  507. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/conftest.py +0 -0
  508. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
  509. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/main.py +0 -0
  510. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
  511. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
  512. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
  513. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
  514. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
  515. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
  516. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
  517. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
  518. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
  519. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
  520. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
  521. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
  522. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
  523. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
  524. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
  525. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
  526. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
  527. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
  528. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
  529. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
  530. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
  531. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
  532. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
  533. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
  534. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
  535. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
  536. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
  537. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
  538. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
  539. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
  540. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
  541. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
  542. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
  543. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
  544. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
  545. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
  546. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
  547. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
  548. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
  549. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
  550. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
  551. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
  552. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
  553. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
  554. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate.sh +0 -0
  555. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
  556. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
  557. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config1.yaml +0 -0
  558. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config2.yaml +0 -0
  559. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config3.yaml +0 -0
  560. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config4.yaml +0 -0
  561. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/generator/__init__.py +0 -0
  562. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/generator/test_enums.py +0 -0
  563. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/helpers.py +0 -0
  564. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_cli_generate.py +0 -0
  565. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_config_validation.py +0 -0
  566. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_generate_code.py +0 -0
  567. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
  568. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
  569. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/config.py +0 -0
  570. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/db/__init__.py +0 -0
  571. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/db/test_listeners.py +0 -0
  572. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/__init__.py +0 -0
  573. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base.py +0 -0
  574. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_multiple.py +0 -0
  575. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_performance.py +0 -0
  576. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_serializable_property.py +0 -0
  577. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
  578. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_with_union.py +0 -0
  579. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_lifecycle.py +0 -0
  580. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/__init__.py +0 -0
  581. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/processes.py +0 -0
  582. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/__init__.py +0 -0
  583. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
  584. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
  585. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
  586. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
  587. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
  588. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
  589. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
  590. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
  591. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
  592. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
  593. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
  594. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
  595. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
  596. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
  597. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
  598. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
  599. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
  600. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
  601. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
  602. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
  603. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/resource_types.py +0 -0
  604. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/__init__.py +0 -0
  605. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
  606. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_customer_id.py +0 -0
  607. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_display_subscription.py +0 -0
  608. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_generic_validators.py +0 -0
  609. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/__init__.py +0 -0
  610. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/conftest.py +0 -0
  611. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/extensions/__init__.py +0 -0
  612. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
  613. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/mutations/helpers.py +0 -0
  614. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
  615. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
  616. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_customer.py +0 -0
  617. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_process.py +0 -0
  618. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_processes.py +0 -0
  619. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_product.py +0 -0
  620. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_product_blocks.py +0 -0
  621. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_resource_types.py +0 -0
  622. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_settings.py +0 -0
  623. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
  624. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_subscription.py +0 -0
  625. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
  626. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_subscriptions.py +0 -0
  627. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_version.py +0 -0
  628. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_workflows.py +0 -0
  629. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/__init__.py +0 -0
  630. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/fixtures.py +0 -0
  631. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
  632. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
  633. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
  634. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
  635. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
  636. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
  637. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/helpers.py +0 -0
  638. {orchestrator_core-3.2.3/test/unit_tests/migrations → orchestrator_core-4.0.0/test/unit_tests/metrics}/__init__.py +0 -0
  639. {orchestrator_core-3.2.3/test/unit_tests/schedules → orchestrator_core-4.0.0/test/unit_tests/migrations}/__init__.py +0 -0
  640. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/migrations/test_cascade_constraint.py +0 -0
  641. {orchestrator_core-3.2.3/test/unit_tests/services → orchestrator_core-4.0.0/test/unit_tests/schedules}/__init__.py +0 -0
  642. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/schedules/test_scheduling.py +0 -0
  643. {orchestrator_core-3.2.3/test/unit_tests/utils → orchestrator_core-4.0.0/test/unit_tests/services}/__init__.py +0 -0
  644. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_input_state.py +0 -0
  645. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_processes.py +0 -0
  646. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_products.py +0 -0
  647. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_subscription_relations.py +0 -0
  648. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_subscriptions.py +0 -0
  649. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_translations.py +0 -0
  650. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/test_db.py +0 -0
  651. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/test_types.py +0 -0
  652. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/test_workflow.py +0 -0
  653. {orchestrator_core-3.2.3/test/unit_tests/websocket → orchestrator_core-4.0.0/test/unit_tests/utils}/__init__.py +0 -0
  654. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_datetime.py +0 -0
  655. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_errors.py +0 -0
  656. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_functional.py +0 -0
  657. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
  658. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_json.py +0 -0
  659. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_search_query.py +0 -0
  660. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_state.py +0 -0
  661. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_strings.py +0 -0
  662. {orchestrator_core-3.2.3/test/unit_tests/workflows/shared → orchestrator_core-4.0.0/test/unit_tests/websocket}/__init__.py +0 -0
  663. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/websocket/test_broadcast.py +0 -0
  664. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/conftest.py +0 -0
  665. {orchestrator_core-3.2.3/test/unit_tests/workflows/tasks → orchestrator_core-4.0.0/test/unit_tests/workflows/shared}/__init__.py +0 -0
  666. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
  667. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
  668. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
  669. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
  670. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_async_workflow.py +0 -0
  671. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_config_db_code.py +0 -0
  672. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
  673. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -0
  674. {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/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.0
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,7 @@
1
1
  The Orchestrator-Core
2
- Copyright [2018-2022] SURF, ESnet
2
+ Copyright [2018-2025] SURF, ESnet, GÉANT
3
3
 
4
4
  This product includes software developed at
5
5
  SURF NL (https://surf.nl)
6
6
  ESnet (https://es.net)
7
+ GÉANT Vereniging (https://geant.org)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 3.2.3
3
+ Version: 4.0.0
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,30 +35,31 @@ 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
+ Requires-Dist: prometheus-client==0.21.1
42
43
  Requires-Dist: psycopg2-binary==2.9.10
43
44
  Requires-Dist: pydantic[email]~=2.8.2
44
- Requires-Dist: pydantic-settings~=2.8.0
45
+ Requires-Dist: pydantic-settings~=2.9.1
45
46
  Requires-Dist: python-dateutil==2.8.2
46
47
  Requires-Dist: python-rapidjson>=1.18,<1.21
47
48
  Requires-Dist: pytz==2025.2
48
49
  Requires-Dist: redis==5.1.1
49
50
  Requires-Dist: schedule==1.1.0
50
51
  Requires-Dist: semver==3.0.4
51
- Requires-Dist: sentry-sdk[fastapi]~=2.25.1
52
- Requires-Dist: SQLAlchemy==2.0.40
52
+ Requires-Dist: sentry-sdk[fastapi]~=2.28.0
53
+ Requires-Dist: SQLAlchemy==2.0.41
53
54
  Requires-Dist: SQLAlchemy-Utils==0.41.2
54
55
  Requires-Dist: structlog
55
- Requires-Dist: typer==0.15.2
56
+ Requires-Dist: typer==0.15.4
56
57
  Requires-Dist: uvicorn[standard]~=0.34.0
57
58
  Requires-Dist: nwa-stdlib~=1.9.0
58
59
  Requires-Dist: oauth2-lib~=2.4.0
59
60
  Requires-Dist: tabulate==0.9.0
60
61
  Requires-Dist: strawberry-graphql>=0.246.2
61
- Requires-Dist: pydantic-forms>=1.4.0, <=2.0.0
62
+ Requires-Dist: pydantic-forms>=1.4.0, <=2.1.0
62
63
  Requires-Dist: celery~=5.5.1 ; extra == "celery"
63
64
  Requires-Dist: toml ; extra == "dev"
64
65
  Requires-Dist: bumpversion ; extra == "dev"
@@ -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
 
@@ -15,29 +15,47 @@ Flask and Django, you install the core library, initialise it with configuration
15
15
 
16
16
 
17
17
  ### Step 1 - Install the package:
18
- Install the core.
18
+
19
+ Create a virtualenv and install the core.
20
+
19
21
  <div class="termy">
20
- ``` console
21
- $ pip install orchestrator-core
22
- ---> 100%
23
- Successfully installed orchestrator-core
22
+
23
+ ```shell
24
+ python -m venv .venv
25
+ source .venv/bin/activate
26
+ pip install orchestrator-core
24
27
  ```
28
+
25
29
  </div>
26
30
 
27
31
  ### Step 2 - Setup the database:
32
+
28
33
  Create a postgres database:
29
34
 
30
35
  <div class="termy">
31
- ``` shell
32
- $ createuser -sP nwa
33
- $ createdb orchestrator-core -O nwa
36
+
37
+ ```shell
38
+ createuser -sP nwa
39
+ createdb orchestrator-core -O nwa
34
40
  ```
41
+
35
42
  </div>
36
43
 
44
+ Choose a password and remember it for later steps.
45
+
46
+ As an example, you can run these docker commands in separate shells to start a temporary postgres instance:
47
+
48
+ ```shell
49
+ docker run --rm --name temp-orch-db -e POSTGRES_PASSWORD=rootpassword -p 5432:5432 postgres:15
50
+
51
+ docker exec -it temp-orch-db su - postgres -c 'createuser -sP nwa && createdb orchestrator-core -O nwa'
52
+ ```
53
+
37
54
  ### Step 3 - Create the main.py:
55
+
38
56
  Create a `main.py` file.
39
57
 
40
- ``` python
58
+ ```python
41
59
  from orchestrator import OrchestratorCore
42
60
  from orchestrator.cli.main import app as core_cli
43
61
  from orchestrator.settings import AppSettings
@@ -48,37 +66,34 @@ if __name__ == "__main__":
48
66
  core_cli()
49
67
  ```
50
68
 
51
-
52
69
  ### Step 4 - Run the database migrations:
53
70
 
54
- Initialize the migration environment.
71
+ Initialize the migration environment and database tables.
72
+
55
73
  <div class="termy">
56
- ``` console
57
- $ PYTHONPATH=. python main.py db init
58
- $ PYTHONPATH=. python main.py db upgrade heads
74
+
75
+ ```shell
76
+ export DATABASE_URI=postgresql://nwa:PASSWORD_FROM_STEP_2@localhost:5432/orchestrator-core
77
+
78
+ python main.py db init
79
+ python main.py db upgrade heads
59
80
  ```
81
+
60
82
  </div>
61
83
 
62
84
  ### Step 5 - Run the app
63
85
 
64
86
  <div class="termy">
65
87
 
66
- ``` shell
67
- $ uvicorn --reload --host 127.0.0.1 --port 8080 main:app
68
- INFO: Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
69
- INFO: Started reloader process [62967] using watchgod
70
- ujson module not found, using json
71
- msgpack not installed, MsgPackSerializer unavailable
72
- 2021-09-28 09:42:14 [warning ] Database object configured, all methods referencing `db` should work. [orchestrator.db]
73
- INFO: Started server process [62971]
74
- 2021-09-28 09:42:14 [info ] Started server process [62971] [uvicorn.error]
75
- INFO: Waiting for application startup.
76
- 2021-09-28 09:42:14 [info ] Waiting for application startup. [uvicorn.error]
77
- INFO: Application startup complete.
78
- 2021-09-28 09:42:14 [info ] Application startup complete. [uvicorn.error]
88
+ ```shell
89
+ export DATABASE_URI=postgresql://nwa:PASSWORD_FROM_STEP_2@localhost:5432/orchestrator-core
90
+ export OAUTH2_ACTIVE=False
91
+
92
+ uvicorn --reload --host 127.0.0.1 --port 8080 main:app
79
93
  ```
94
+
80
95
  </div>
81
96
 
82
97
  ### Step 6 - Profit :boom: :grin:
83
98
 
84
- Visit [the app](http://127.0.0.1:8080/api/redoc) to view the api documentation.
99
+ Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) to view and interact with the API.
@@ -18,15 +18,34 @@ Before running an installation of the Workflow Orchestrator UI make sure to have
18
18
 
19
19
  ### Installation
20
20
 
21
- - Clone the example ui repository
22
- `git clone https://github.com/workfloworchestrator/example-orchestrator-ui`
23
- - Install the npm packages
24
- `npm i`
25
- - Set the correct env variables. The defaults from .env.example will work out of the box with the example orchestrator backend
26
- `cp .env.example .env`
27
- - Run the application
28
- `npm run dev`
29
- - The orchestrator ui now runs on http://localhost:3000
21
+ Clone the example UI repository:
22
+
23
+ ```
24
+ mkdir orchestrator-ui
25
+ cd orchestrator-ui
26
+ git clone https://github.com/workfloworchestrator/example-orchestrator-ui .
27
+ ```
28
+
29
+ Install the npm packages:
30
+
31
+ ```
32
+ npm i
33
+ ```
34
+
35
+ Set the correct env variables.
36
+ To run the UI against the dockerized example orchestrator setup, it's recommended to use the `orchestrator-ui.env` env-file.
37
+
38
+ ```
39
+ wget -O .env https://raw.githubusercontent.com/workfloworchestrator/example-orchestrator/refs/heads/master/docker/orchestrator-ui/orchestrator-ui.env
40
+ ```
41
+
42
+ Run the application:
43
+
44
+ ```
45
+ npm run dev
46
+ ```
47
+
48
+ The Orchestrator UI now runs on http://localhost:3000
30
49
 
31
50
 
32
51
 
@@ -22,11 +22,10 @@ valid Git repository.
22
22
 
23
23
  ### Migrations folder and local Alembic head
24
24
 
25
- The `migrations` folder is created when running `python main.py db ini`. This
26
- folder is used to store the local Alembic database migrations. The
27
- orchestrator-core package also contains Alembic database migrations, the Alembic
28
- head in the core is labeled `schema`. The local Alembic head should be labeled
29
- `data`.
25
+ The `migrations` folder is created when running `python main.py db init`.
26
+ This folder is used to store the local Alembic database migrations.
27
+ The orchestrator-core package also contains Alembic database migrations, the Alembic head in the core is labeled `schema`.
28
+ The local Alembic head should be labeled `data`.
30
29
 
31
30
  When you already have product(s), workflow(s) or product template(s) defined,
32
31
  the local Alembic head can be created by running either `python main.py db
@@ -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.
@@ -0,0 +1,45 @@
1
+ # Collecting Metrics
2
+
3
+ The ``orchestrator-core`` is capable of exporting metrics on an API endpoint that is compatible with
4
+ [Prometheus](https://prometheus.io). Prometheus is a time-series database that can be used to collect metrics over time,
5
+ to give insight in the usage and performance of your orchestrator, the running processes, and its subscriptions.
6
+
7
+ By default, ``orchestrator-core`` exports metrics for: subscriptions, processes, and the workflow engine. These can be
8
+ enabled by enabling the corresponding app setting ``ENABLE_PROMETHEUS_METRICS_ENDPOINT``. An API response on
9
+ ``/api/metrics`` with the default metrics enabled looks as follows:
10
+
11
+ ```
12
+ # HELP wfo_subscriptions_count Number of subscriptions per product, lifecycle state, customer, and in sync state.
13
+ # TYPE wfo_subscriptions_count gauge
14
+ wfo_subscriptions_count{customer_id="00000000-0000-0000-0000-000000000000",insync="True",lifecycle_state="active",product_name="Router"} 53.0
15
+ wfo_subscriptions_count{customer_id="00000000-0000-0000-0000-000000000000",insync="True",lifecycle_state="active",product_name="IP trunk"} 52.0
16
+ wfo_subscriptions_count{customer_id="00000000-0000-0000-0000-000000000000",insync="True",lifecycle_state="active",product_name="Site"} 36.0
17
+ wfo_subscriptions_count{customer_id="00000000-0000-0000-0000-000000000000",insync="True",lifecycle_state="terminated",product_name="Router"} 22.0
18
+ # HELP wfo_process_count Number of processes per status, creator, task, product, workflow, customer, and target.
19
+ # TYPE wfo_process_count gauge
20
+ wfo_process_count{created_by="SYSTEM",customer_id="00000000-0000-0000-0000-000000000000",is_task="True",last_status="completed",product_name="IP trunk",workflow_name="validate_iptrunk",workflow_target="SYSTEM"} 5755.0
21
+ wfo_process_count{created_by="SYSTEM",customer_id="00000000-0000-0000-0000-000000000000",is_task="True",last_status="completed",product_name="Router",workflow_name="validate_router",workflow_target="SYSTEM"} 4066.0
22
+ wfo_process_count{created_by="SYSTEM",customer_id="12345678-1234-abcd-deff-123456789012",is_task="True",last_status="completed",product_name="Edge Port",workflow_name="validate_edge_port",workflow_target="SYSTEM"} 133.0
23
+ # HELP wfo_process_seconds_total_count Total time spent on processes in seconds.
24
+ # TYPE wfo_process_seconds_total_count gauge
25
+ wfo_process_seconds_total_count{created_by="SYSTEM",customer_id="00000000-0000-0000-0000-000000000000",is_task="True",last_status="completed",product_name="IP trunk",workflow_name="validate_iptrunk",workflow_target="SYSTEM"} 3.11e+06
26
+ wfo_process_seconds_total_count{created_by="SYSTEM",customer_id="00000000-0000-0000-0000-000000000000",is_task="True",last_status="completed",product_name="Router",workflow_name="validate_router",workflow_target="SYSTEM"} 6.72e+06
27
+ wfo_process_seconds_total_count{created_by="SYSTEM",customer_id="12345678-1234-abcd-deff-123456789012",is_task="True",last_status="completed",product_name="Edge Port",workflow_name="validate_edge_port",workflow_target="SYSTEM"} 6514.921
28
+ # HELP wfo_engine_status Current workflow engine status.
29
+ # TYPE wfo_engine_status gauge
30
+ wfo_engine_status{wfo_engine_status="PAUSED"} 0.0
31
+ wfo_engine_status{wfo_engine_status="PAUSING"} 0.0
32
+ wfo_engine_status{wfo_engine_status="RUNNING"} 1.0
33
+ # HELP wfo_active_process_count Number of currently running processes in the workflow engine.
34
+ # TYPE wfo_active_process_count gauge
35
+ wfo_active_process_count 5.0
36
+ ```
37
+
38
+ ## Adding custom metrics
39
+
40
+ It's possible to add more metric collectors to your orchestrator, if there are organisation-specific metrics you want
41
+ to keep track of. This is done by implementing extra metrics from the ``prometheus_client`` library, documentation on
42
+ how to achieve this is available [here](https://prometheus.github.io/client_python/).
43
+
44
+ When your new collector is implemented, register it in the orchestrator metrics registry when initialising your
45
+ orchestrator with ``ORCHESTRATOR_METRICS_REGISTRY.register(MyNewCollector())``.
@@ -150,7 +150,7 @@ nav:
150
150
  - Prerequisites: getting-started/versions.md
151
151
  - Base Application:
152
152
  - Preparing source folder: getting-started/prepare-source-folder.md
153
- - Python Virtualenv: getting-started/base.md
153
+ - Base application: getting-started/base.md
154
154
  - Docker: getting-started/docker.md
155
155
  - Orchestrator UI: getting-started/orchestration-ui.md
156
156
  - Reference Documentation:
@@ -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.0"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -22,9 +22,10 @@ from sqlalchemy.exc import SQLAlchemyError
22
22
  from oauth2_lib.fastapi import OIDCUserModel
23
23
  from orchestrator.api.error_handling import raise_status
24
24
  from orchestrator.db import EngineSettingsTable
25
- from orchestrator.schemas import EngineSettingsBaseSchema, EngineSettingsSchema, GlobalStatusEnum, WorkerStatus
25
+ from orchestrator.schemas import EngineSettingsBaseSchema, EngineSettingsSchema, WorkerStatus
26
26
  from orchestrator.security import authenticate
27
27
  from orchestrator.services import processes, settings
28
+ from orchestrator.services.settings import generate_engine_global_status
28
29
  from orchestrator.settings import ExecutorType, app_settings
29
30
  from orchestrator.utils.json import json_dumps
30
31
  from orchestrator.utils.redis import delete_keys_matching_pattern
@@ -165,17 +166,6 @@ def generate_engine_status_response(
165
166
  Engine StatusEnum
166
167
 
167
168
  """
168
-
169
- if engine_settings.global_lock and engine_settings.running_processes > 0:
170
- result = EngineSettingsSchema.model_validate(engine_settings)
171
- result.global_status = GlobalStatusEnum.PAUSING
172
- return result
173
-
174
- if engine_settings.global_lock and engine_settings.running_processes == 0:
175
- result = EngineSettingsSchema.model_validate(engine_settings)
176
- result.global_status = GlobalStatusEnum.PAUSED
177
- return result
178
-
179
169
  result = EngineSettingsSchema.model_validate(engine_settings)
180
- result.global_status = GlobalStatusEnum.RUNNING
170
+ result.global_status = generate_engine_global_status(engine_settings)
181
171
  return result
@@ -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)
@@ -163,6 +163,7 @@ def subscriptions_search(
163
163
  @router.get(
164
164
  "/workflows/{subscription_id}",
165
165
  response_model=SubscriptionWorkflowListsSchema,
166
+ response_model_by_alias=True,
166
167
  response_model_exclude_none=True,
167
168
  deprecated=True,
168
169
  description="This endpoint is deprecated and will be removed in a future release. Please use the GraphQL query",
@@ -25,6 +25,7 @@ import structlog
25
25
  import typer
26
26
  from fastapi.applications import FastAPI
27
27
  from fastapi_etag.dependency import add_exception_handler
28
+ from prometheus_client import make_asgi_app
28
29
  from sentry_sdk.integrations import Integration
29
30
  from sentry_sdk.integrations.asyncio import AsyncioIntegration
30
31
  from sentry_sdk.integrations.fastapi import FastApiIntegration
@@ -54,6 +55,7 @@ from orchestrator.graphql.schema import ContextGetterFactory
54
55
  from orchestrator.graphql.schemas.subscription import SubscriptionInterface
55
56
  from orchestrator.graphql.types import ScalarOverrideType, StrawberryModelType
56
57
  from orchestrator.log_config import LOGGER_OVERRIDES
58
+ from orchestrator.metrics import ORCHESTRATOR_METRICS_REGISTRY, initialize_default_metrics
57
59
  from orchestrator.services.process_broadcast_thread import ProcessDataBroadcastThread
58
60
  from orchestrator.settings import AppSettings, ExecutorType, app_settings
59
61
  from orchestrator.version import GIT_COMMIT_HASH
@@ -143,9 +145,14 @@ class OrchestratorCore(FastAPI):
143
145
  self.add_exception_handler(ProblemDetailException, problem_detail_handler) # type: ignore[arg-type]
144
146
  add_exception_handler(self)
145
147
 
148
+ if base_settings.ENABLE_PROMETHEUS_METRICS_ENDPOINT:
149
+ initialize_default_metrics()
150
+ metrics_app = make_asgi_app(registry=ORCHESTRATOR_METRICS_REGISTRY)
151
+ self.mount("/api/metrics", metrics_app)
152
+
146
153
  @self.router.get("/", response_model=str, response_class=JSONResponse, include_in_schema=False)
147
154
  def _index() -> str:
148
- return "Orchestrator orchestrator"
155
+ return "Orchestrator Core"
149
156
 
150
157
  def add_sentry(
151
158
  self,
@@ -154,6 +161,7 @@ class OrchestratorCore(FastAPI):
154
161
  server_name: str,
155
162
  environment: str,
156
163
  release: str | None = GIT_COMMIT_HASH,
164
+ **sentry_kwargs: Any,
157
165
  ) -> None:
158
166
  logger.info("Adding Sentry middleware to app", app=self.title)
159
167
  if self.base_settings.EXECUTOR == ExecutorType.WORKER:
@@ -173,6 +181,7 @@ class OrchestratorCore(FastAPI):
173
181
  integrations=sentry_integrations,
174
182
  propagate_traces=True,
175
183
  profiles_sample_rate=trace_sample_rate,
184
+ **sentry_kwargs,
176
185
  )
177
186
 
178
187
  @staticmethod
@@ -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 (