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.
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.bumpversion.cfg +2 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/NOTICE +2 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/PKG-INFO +9 -8
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/workflow.md +8 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/base.md +43 -28
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/orchestration-ui.md +28 -9
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/prepare-source-folder.md +4 -5
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/migration-guide/2.0.md +0 -4
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/migration-guide/3.0.md +0 -4
- orchestrator_core-4.0.0/docs/migration-guide/4.0.md +69 -0
- orchestrator_core-4.0.0/docs/reference-docs/metrics.md +45 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/mkdocs.yml +2 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/__init__.py +1 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/settings.py +3 -13
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/subscriptions.py +1 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/app.py +10 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/new_product_migration.j2 +5 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migrate_tasks.py +5 -5
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migrate_workflows.py +1 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/models.py +3 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/base.py +4 -24
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/customer_description.py +0 -4
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/mutations/customer_description.py +1 -1
- orchestrator_core-4.0.0/orchestrator/metrics/__init__.py +3 -0
- orchestrator_core-4.0.0/orchestrator/metrics/engine.py +49 -0
- orchestrator_core-4.0.0/orchestrator/metrics/init.py +14 -0
- orchestrator_core-4.0.0/orchestrator/metrics/processes.py +147 -0
- orchestrator_core-4.0.0/orchestrator/metrics/subscriptions.py +93 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/helpers.py +14 -6
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/templates/alembic.ini.j2 +1 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/templates/env.py.j2 +4 -7
- orchestrator_core-4.0.0/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +33 -0
- orchestrator_core-4.0.0/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +28 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/validate_subscriptions.py +4 -4
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/workflow.py +3 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/celery.py +13 -5
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/processes.py +2 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/settings.py +10 -1
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/subscriptions.py +10 -23
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/workflows.py +8 -4
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/settings.py +1 -4
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/targets.py +1 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/get_subscription_dict.py +0 -4
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/redis.py +1 -67
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/modify_note.py +3 -11
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/steps.py +2 -86
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/validate_product_type.py +2 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/validate_products.py +3 -6
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/utils.py +3 -23
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/pyproject.toml +8 -7
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_subscriptions.py +4 -58
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/env.py +4 -7
- {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
- {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
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/conftest.py +2 -2
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/workflows.py +8 -1
- orchestrator_core-4.0.0/test/unit_tests/metrics/conftest.py +27 -0
- orchestrator_core-4.0.0/test/unit_tests/metrics/test_engine_metrics.py +18 -0
- orchestrator_core-4.0.0/test/unit_tests/metrics/test_process_metrics.py +27 -0
- orchestrator_core-4.0.0/test/unit_tests/metrics/test_subscription_metrics.py +60 -0
- orchestrator_core-4.0.0/test/unit_tests/utils/get_subscription_dict.py +11 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/__init__.py +3 -1
- orchestrator_core-4.0.0/test/unit_tests/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +7 -3
- orchestrator_core-3.2.3/test/unit_tests/api/test_caching.py +0 -120
- orchestrator_core-3.2.3/test/unit_tests/utils/get_subscription_dict.py +0 -38
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.coveragerc +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/dependabot.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/README.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/build-push-container.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/changelog.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/codeql-analysis.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/gh-pages.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/issues.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/publish-package.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/run-codspeed-tests.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/run-linting-tests.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/run-unit-tests.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.github/workflows/scheduled-build.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.gitignore +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.pre-commit-config.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/.stignore +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/CHANGELOG.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/Dockerfile +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/LICENSE +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/README.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/codecov.yml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/domainmodels.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/forms-frontend.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/tasks.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/framework.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/img/base-orchestrator-setup.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/orchestration/philosophy.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/backfilling.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/context.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/imports.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/introduction.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/ip_static.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/ip_static.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_vpn.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/l2_vpn.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/modelling.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/node.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/node.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/port.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/port.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/product_block_graph.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/product_block_graph.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/standards.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/product_modelling/terminology.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/tldr.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/contributing/development.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/contributing/guidelines.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/contributing/testing.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/css/custom.css +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/css/style.css +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/css/termynal.css +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/docker.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/versions.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/img/WFO-Emblem-White.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/img/favicon.ico +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/index.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/js/custom.js +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/js/termynal.js +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/api.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/app/app.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/app/scaling.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/cli.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/database.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/generator.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/instantiating.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/model_attributes.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/overview.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/product_blocks.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/product_types.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/properties.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/type_casting.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/union_types.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/domain_models/validation.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/forms.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/graphql.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/python.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/search.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/search_overview.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/serialization.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/tasks.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/tests.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/tldr.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/websockets.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/workflows/callbacks.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/reference-docs/workflows/workflow-steps.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/bootstrap.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/create-your-own.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/docker-installation.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/domain-models.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/execute-workflows.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/generator.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/l2_point_to_point.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-create.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-modify.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-terminate.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/node-validate.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/overview.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/scenario.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/workflow-basics.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/advanced/workflow-introduction.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/create-user-group.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/create-user.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/database-migration.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/debian.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/docker.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/domain-models.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/explore.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/input-forms.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/macos.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/modify-user-group.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/modify-user.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/register-workflows.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/start-applications.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/terminate-user-group.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/terminate-user.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/workflow-introduction.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/beginner/workshop-overview.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/Software-topology.drawio.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/clab_topology.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/metadata_products.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/netbox_devices_active.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/subscriptions.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/workshops/images/topology.drawio.png +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/includes/abbreviations.md +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/nitpick-style.toml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/api.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/health.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/products.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/user.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/error_handling.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/models.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/database.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generate.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/README +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/enums.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/migration.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/product_block.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/settings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/translations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/unittest.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/validations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/generator/workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/enums.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/macros.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/product.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/helpers/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/helpers/input_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/helpers/print_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/main.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migrate_domain_models.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/migration_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/cli/scheduler.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/config/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/config/assignee.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/database.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/filters.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/product_block.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/resource_type.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/search_filters/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/filters/workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/listeners.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/loaders.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/queries/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/queries/subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/queries/subscription_instance.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/range/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/range/range.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/product_block.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/resource_type.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/sorting.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/db/sorting/workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/populator.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/migrate_20.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/migrate_30.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/devtools/scripts/shared.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/distlock_manager.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/managers/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/context_cache.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/lifecycle.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/domain/subscription_instance_transform.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/exception_handlers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/customer_contact_list.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/customer_id.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/display_subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/network_type_validators.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/forms/validators/product_id.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/autoregistration.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/extensions/model_cache.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/extensions/stats.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/loaders/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/loaders/subscriptions.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/mutations/start_process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/pagination.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/customer.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/product_block.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/resource_type.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/settings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/version.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/resolvers/workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schema.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/customer.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/customer_description.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/errors.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/fixed_input.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/product_block.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/resource_type.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/settings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/version.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/schemas/workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/override_class.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/log_config.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/README +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/alembic.ini +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/env.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/script.py.mako +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
- {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
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/py.typed +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/resume_workflows.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/scheduling.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/task_vacuum.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schedules/validate_products.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/base.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/engine_settings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/fixed_input.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/problem_detail.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/product_block.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/resource_type.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/schemas/subscription_descriptions.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/security.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/fixed_inputs.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/input_state.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/process_broadcast_thread.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/products.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/resource_types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/subscription_relations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/tasks.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/services/translations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/crypt.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/datetime.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/deprecation_logger.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/docs.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/enrich_process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/errors.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/fixed_inputs.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/functional.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/get_updated_properties.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/json.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/redis_client.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/search_query.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/state.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/strings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/utils/validate_data_version.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/version.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/websocket/websocket_manager.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/removed_workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/workflows/translations/en-GB.json +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/setup.cfg +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/setup.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/conftest.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/acceptance_tests/test_test_product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_health.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_models.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_processes.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_processes_ws.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_product_blocks.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_products.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_resource_types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_settings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_workflows.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/api/test_ws.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/conftest.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/main.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/generate.sh +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config1.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config2.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config3.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/data/product_config4.yaml +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/generator/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/generator/test_enums.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_cli_generate.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_config_validation.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_generate_code.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/config.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/db/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/db/test_listeners.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_multiple.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_performance.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_serializable_property.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_base_with_union.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/domain/test_lifecycle.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/processes.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
- {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
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/fixtures/products/resource_types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_customer_id.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_display_subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/forms/test_generic_validators.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/conftest.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/mutations/helpers.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_customer.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_process.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_processes.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_product.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_product_blocks.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_resource_types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_settings.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_subscription.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_subscriptions.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_version.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/test_workflows.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/fixtures.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/helpers.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/migrations → orchestrator_core-4.0.0/test/unit_tests/metrics}/__init__.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/schedules → orchestrator_core-4.0.0/test/unit_tests/migrations}/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/migrations/test_cascade_constraint.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/services → orchestrator_core-4.0.0/test/unit_tests/schedules}/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/schedules/test_scheduling.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/utils → orchestrator_core-4.0.0/test/unit_tests/services}/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_input_state.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_processes.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_products.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_subscription_relations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_subscriptions.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/services/test_translations.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/test_db.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/test_types.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/test_workflow.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/websocket → orchestrator_core-4.0.0/test/unit_tests/utils}/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_datetime.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_errors.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_functional.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_json.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_search_query.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_state.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/utils/test_strings.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/workflows/shared → orchestrator_core-4.0.0/test/unit_tests/websocket}/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/websocket/test_broadcast.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/conftest.py +0 -0
- {orchestrator_core-3.2.3/test/unit_tests/workflows/tasks → orchestrator_core-4.0.0/test/unit_tests/workflows/shared}/__init__.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_async_workflow.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_config_db_code.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
- {orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -0
- {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 =
|
|
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,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orchestrator-core
|
|
3
|
-
Version:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
52
|
-
Requires-Dist: SQLAlchemy==2.0.
|
|
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.
|
|
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.
|
|
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"
|
{orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/architecture/application/workflow.md
RENAMED
|
@@ -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="
|
|
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 `
|
|
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
|
-
|
|
18
|
+
|
|
19
|
+
Create a virtualenv and install the core.
|
|
20
|
+
|
|
19
21
|
<div class="termy">
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
```
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
|
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.
|
{orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/orchestration-ui.md
RENAMED
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
|
{orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/docs/getting-started/prepare-source-folder.md
RENAMED
|
@@ -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
|
|
26
|
-
folder is used to store the local Alembic database migrations.
|
|
27
|
-
orchestrator-core package also contains Alembic database migrations, the Alembic
|
|
28
|
-
|
|
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
|
|
@@ -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
|
-
-
|
|
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:
|
{orchestrator_core-3.2.3 → orchestrator_core-4.0.0}/orchestrator/api/api_v1/endpoints/settings.py
RENAMED
|
@@ -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,
|
|
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 =
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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=
|
|
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 (
|