orchestrator-core 4.0.0rc1__tar.gz → 4.0.0rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.bumpversion.cfg +1 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/PKG-INFO +1 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/application/workflow.md +8 -2
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/migration-guide/2.0.md +0 -4
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/migration-guide/3.0.md +0 -4
- orchestrator_core-4.0.0rc2/docs/migration-guide/4.0.md +69 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/__init__.py +1 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/new_product_migration.j2 +5 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_tasks.py +5 -5
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_workflows.py +1 -2
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/models.py +2 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/helpers.py +14 -6
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +1 -1
- orchestrator_core-4.0.0rc2/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +28 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/validate_subscriptions.py +4 -4
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/workflow.py +1 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/celery.py +11 -3
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/processes.py +1 -2
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/subscriptions.py +4 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/workflows.py +8 -4
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/targets.py +1 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/validate_product_type.py +2 -2
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/validate_products.py +3 -6
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/utils.py +1 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +5 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +5 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +5 -1
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/__init__.py +3 -1
- orchestrator_core-4.0.0rc1/docs/migration-guide/4.0.md +0 -16
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.coveragerc +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/dependabot.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/README.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/build-push-container.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/changelog.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/codeql-analysis.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/gh-pages.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/issues.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/publish-package.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/run-codspeed-tests.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/run-linting-tests.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/run-unit-tests.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.github/workflows/scheduled-build.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.gitignore +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.pre-commit-config.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/.stignore +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/CHANGELOG.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/Dockerfile +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/LICENSE +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/NOTICE +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/README.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/codecov.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/application/domainmodels.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/application/forms-frontend.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/application/tasks.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/framework.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/img/base-orchestrator-setup.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/orchestration/philosophy.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/backfilling.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/context.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/imports.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/introduction.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/ip_static.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/ip_static.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_vpn.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/l2_vpn.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/modelling.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/node.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/node.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/port.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/port.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/product_block_graph.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/product_block_graph.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/standards.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/product_modelling/terminology.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/architecture/tldr.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/contributing/development.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/contributing/guidelines.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/contributing/testing.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/css/custom.css +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/css/style.css +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/css/termynal.css +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/getting-started/base.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/getting-started/docker.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/getting-started/orchestration-ui.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/getting-started/prepare-source-folder.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/getting-started/versions.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/img/WFO-Emblem-White.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/img/favicon.ico +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/index.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/js/custom.js +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/js/termynal.js +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/api.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/app/app.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/app/scaling.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/auth-backend-and-frontend.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/cli.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/database.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/generator.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/instantiating.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/model_attributes.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/overview.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/product_blocks.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/product_types.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/properties.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/type_casting.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/union_types.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/domain_models/validation.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/forms.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/graphql.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/python.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/search.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/search_overview.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/serialization.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/tasks.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/tests.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/tldr.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/websockets.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/workflows/callbacks.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/reference-docs/workflows/workflow-steps.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/bootstrap.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/create-your-own.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/docker-installation.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/domain-models.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/execute-workflows.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/generator.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/l2_point_to_point.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-create.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-modify.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-terminate.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/node-validate.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/overview.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/scenario.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/workflow-basics.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/advanced/workflow-introduction.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/create-user-group.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/create-user.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/database-migration.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/debian.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/docker.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/domain-models.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/explore.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/input-forms.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/macos.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/modify-user-group.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/modify-user.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/register-workflows.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/start-applications.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/terminate-user-group.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/terminate-user.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/workflow-introduction.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/beginner/workshop-overview.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/images/Software-topology.drawio.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/images/clab_topology.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/images/metadata_products.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/images/netbox_devices_active.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/images/subscriptions.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/docs/workshops/images/topology.drawio.png +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/includes/abbreviations.md +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/mkdocs.yml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/nitpick-style.toml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/api.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/health.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/products.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/user.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/error_handling.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/api/models.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/app.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/database.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generate.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/README +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/enums.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/migration.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/product_block.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/translations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/unittest.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/validations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/generator/workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/enums.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/macros.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/product.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/helpers/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/helpers/input_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/helpers/print_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/main.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_domain_models.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migration_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/scheduler.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/config/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/config/assignee.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/database.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/filters.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/product_block.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/resource_type.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/search_filters/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/filters/workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/listeners.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/loaders.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/queries/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/queries/subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/queries/subscription_instance.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/range/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/range/range.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/product_block.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/resource_type.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/sorting.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/db/sorting/workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/populator.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/migrate_20.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/migrate_30.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/devtools/scripts/shared.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/distlock_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/managers/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/base.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/context_cache.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/customer_description.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/lifecycle.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/domain/subscription_instance_transform.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/exception_handlers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/customer_contact_list.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/customer_id.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/display_subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/network_type_validators.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/forms/validators/product_id.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/autoregistration.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/extensions/model_cache.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/extensions/stats.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/loaders/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/loaders/subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/mutations/customer_description.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/mutations/start_process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/pagination.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/customer.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/product_block.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/resource_type.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/version.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/resolvers/workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schema.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/customer.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/customer_description.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/errors.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/product_block.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/resource_type.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/version.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/schemas/workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/override_class.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/log_config.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/README +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/alembic.ini +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/env.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/script.py.mako +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/templates/env.py.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/py.typed +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/resume_workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/scheduling.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/task_vacuum.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schedules/validate_products.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/base.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/engine_settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/problem_detail.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/product_block.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/resource_type.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/schemas/subscription_descriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/security.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/fixed_inputs.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/input_state.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/process_broadcast_thread.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/products.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/resource_types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/subscription_relations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/tasks.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/translations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/crypt.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/datetime.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/deprecation_logger.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/docs.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/enrich_process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/errors.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/fixed_inputs.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/functional.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/get_updated_properties.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/json.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/redis.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/redis_client.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/search_query.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/state.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/strings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/utils/validate_data_version.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/version.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/websocket/websocket_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/modify_note.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/removed_workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/steps.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/workflows/translations/en-GB.json +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/pyproject.toml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/setup.cfg +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/setup.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/conftest.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/acceptance_tests/test_test_product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_health.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_models.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_processes.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_processes_ws.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_product_blocks.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_products.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_resource_types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/api/test_ws.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/conftest.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/main.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/env.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/generate.sh +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config1.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config2.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config3.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/data/product_config4.yaml +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/generator/test_enums.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_cli_generate.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_config_validation.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_generate_code.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/config.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/conftest.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/db/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/db/test_listeners.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_multiple.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_performance.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_serializable_property.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_base_with_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/domain/test_lifecycle.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/processes.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/products/resource_types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/fixtures/workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_customer_id.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_display_subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/forms/test_generic_validators.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/conftest.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/mutations/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_customer.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_process.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_processes.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_product.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_product_blocks.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_resource_types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_settings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_subscription.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_version.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/test_workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/fixtures.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/helpers.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/migrations/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/migrations/test_cascade_constraint.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/schedules/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/schedules/test_scheduling.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_input_state.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_processes.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_products.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_subscription_relations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/services/test_translations.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/test_db.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/test_types.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/test_workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_datetime.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_errors.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_functional.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_json.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_search_query.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_state.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/utils/test_strings.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/websocket/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/websocket/test_broadcast.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/conftest.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/shared/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_async_workflow.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_config_db_code.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -0
- {orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/test_modify_note.py +0 -0
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/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
|
|
|
@@ -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.
|
|
@@ -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
|
)
|
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/cli/migrate_workflows.py
RENAMED
|
@@ -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()]
|
|
@@ -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 (
|
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/migrations/helpers.py
RENAMED
|
@@ -135,18 +135,21 @@ def create_workflow(conn: sa.engine.Connection, workflow: dict) -> None:
|
|
|
135
135
|
>>> workflow = {
|
|
136
136
|
"name": "workflow_name",
|
|
137
137
|
"target": "SYSTEM",
|
|
138
|
+
"is_task": False,
|
|
138
139
|
"description": "workflow description",
|
|
139
140
|
"product_type": "product_type",
|
|
140
141
|
}
|
|
141
142
|
>>> create_workflow(conn, workflow)
|
|
142
143
|
"""
|
|
144
|
+
if not workflow.get("is_task", False):
|
|
145
|
+
workflow["is_task"] = False
|
|
143
146
|
|
|
144
147
|
conn.execute(
|
|
145
148
|
sa.text(
|
|
146
149
|
"""
|
|
147
150
|
WITH new_workflow AS (
|
|
148
|
-
INSERT INTO workflows(name, target, description)
|
|
149
|
-
VALUES (:name, :target, :description)
|
|
151
|
+
INSERT INTO workflows(name, target, is_task, description)
|
|
152
|
+
VALUES (:name, :target, :is_task, :description)
|
|
150
153
|
ON CONFLICT DO NOTHING
|
|
151
154
|
RETURNING workflow_id)
|
|
152
155
|
INSERT
|
|
@@ -184,8 +187,8 @@ def create_task(conn: sa.engine.Connection, task: dict) -> None:
|
|
|
184
187
|
conn.execute(
|
|
185
188
|
sa.text(
|
|
186
189
|
"""
|
|
187
|
-
INSERT INTO workflows(name, target, description)
|
|
188
|
-
VALUES (:name, 'SYSTEM', :description)
|
|
190
|
+
INSERT INTO workflows(name, target, is_task, description)
|
|
191
|
+
VALUES (:name, 'SYSTEM', TRUE, :description)
|
|
189
192
|
ON CONFLICT DO NOTHING
|
|
190
193
|
RETURNING workflow_id
|
|
191
194
|
"""
|
|
@@ -206,6 +209,7 @@ def create_workflows(conn: sa.engine.Connection, new: dict) -> None:
|
|
|
206
209
|
"workflow_name": {
|
|
207
210
|
"workflow_id": "f2702074-3203-454c-b298-6dfa7675423d",
|
|
208
211
|
"target": "CREATE",
|
|
212
|
+
"is_task": False,
|
|
209
213
|
"description": "Workflow description",
|
|
210
214
|
"tag": "ProductBlockName1",
|
|
211
215
|
"search_phrase": "Search Phrase%",
|
|
@@ -214,12 +218,16 @@ def create_workflows(conn: sa.engine.Connection, new: dict) -> None:
|
|
|
214
218
|
"""
|
|
215
219
|
for name, workflow in new.items():
|
|
216
220
|
workflow["name"] = name
|
|
221
|
+
|
|
222
|
+
if not workflow.get("is_task", False):
|
|
223
|
+
workflow["is_task"] = False
|
|
224
|
+
|
|
217
225
|
conn.execute(
|
|
218
226
|
sa.text(
|
|
219
227
|
"""
|
|
220
228
|
WITH new_workflow AS (
|
|
221
|
-
INSERT INTO workflows(workflow_id, name, target, description)
|
|
222
|
-
VALUES (:workflow_id, :name, :target, :description)
|
|
229
|
+
INSERT INTO workflows(workflow_id, name, target, is_task, description)
|
|
230
|
+
VALUES (:workflow_id, :name, :target, :is_task, :description)
|
|
223
231
|
RETURNING workflow_id)
|
|
224
232
|
INSERT
|
|
225
233
|
INTO products_workflows (product_id, workflow_id)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Add is_task to workflow.
|
|
2
|
+
|
|
3
|
+
Revision ID: 161918133bec
|
|
4
|
+
Revises: 68d14db1b8da
|
|
5
|
+
Create Date: 2025-05-08 11:25:51.966410
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "161918133bec"
|
|
14
|
+
down_revision = "68d14db1b8da"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade() -> None:
|
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
21
|
+
op.add_column("workflows", sa.Column("is_task", sa.Boolean(), server_default=sa.text("false"), nullable=False))
|
|
22
|
+
# ### end Alembic commands ###
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def downgrade() -> None:
|
|
26
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
27
|
+
op.drop_column("workflows", "is_task")
|
|
28
|
+
# ### end Alembic commands ###
|
|
@@ -22,7 +22,7 @@ from orchestrator.services.subscriptions import (
|
|
|
22
22
|
get_subscriptions_on_product_table_in_sync,
|
|
23
23
|
)
|
|
24
24
|
from orchestrator.services.workflows import (
|
|
25
|
-
|
|
25
|
+
get_validation_product_workflows_for_subscription,
|
|
26
26
|
start_validation_workflow_for_workflows,
|
|
27
27
|
)
|
|
28
28
|
from orchestrator.settings import app_settings
|
|
@@ -42,9 +42,9 @@ def validate_subscriptions() -> None:
|
|
|
42
42
|
subscriptions = get_subscriptions_on_product_table_in_sync()
|
|
43
43
|
|
|
44
44
|
for subscription in subscriptions:
|
|
45
|
-
|
|
45
|
+
validation_product_workflows = get_validation_product_workflows_for_subscription(subscription)
|
|
46
46
|
|
|
47
|
-
if not
|
|
47
|
+
if not validation_product_workflows:
|
|
48
48
|
logger.warning(
|
|
49
49
|
"SubscriptionTable has no validation workflow",
|
|
50
50
|
subscription=subscription,
|
|
@@ -52,4 +52,4 @@ def validate_subscriptions() -> None:
|
|
|
52
52
|
)
|
|
53
53
|
break
|
|
54
54
|
|
|
55
|
-
start_validation_workflow_for_workflows(subscription=subscription, workflows=
|
|
55
|
+
start_validation_workflow_for_workflows(subscription=subscription, workflows=validation_product_workflows)
|
|
@@ -24,7 +24,7 @@ from orchestrator.api.error_handling import raise_status
|
|
|
24
24
|
from orchestrator.db import ProcessTable, db
|
|
25
25
|
from orchestrator.services.input_state import store_input_state
|
|
26
26
|
from orchestrator.services.processes import create_process, delete_process
|
|
27
|
-
from orchestrator.
|
|
27
|
+
from orchestrator.services.workflows import get_workflow_by_name
|
|
28
28
|
from orchestrator.workflows import get_workflow
|
|
29
29
|
from pydantic_forms.types import State
|
|
30
30
|
|
|
@@ -51,7 +51,11 @@ def _celery_start_process(
|
|
|
51
51
|
if not workflow:
|
|
52
52
|
raise_status(HTTPStatus.NOT_FOUND, "Workflow does not exist")
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
wf_table = get_workflow_by_name(workflow.name)
|
|
55
|
+
if not wf_table:
|
|
56
|
+
raise_status(HTTPStatus.NOT_FOUND, "Workflow in Database does not exist")
|
|
57
|
+
|
|
58
|
+
task_name = NEW_TASK if wf_table.is_task else NEW_WORKFLOW
|
|
55
59
|
trigger_task = get_celery_task(task_name)
|
|
56
60
|
pstat = create_process(workflow_key, user_inputs, user)
|
|
57
61
|
try:
|
|
@@ -80,7 +84,11 @@ def _celery_resume_process(
|
|
|
80
84
|
last_process_status = process.last_status
|
|
81
85
|
workflow = pstat.workflow
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
wf_table = get_workflow_by_name(workflow.name)
|
|
88
|
+
if not workflow or not wf_table:
|
|
89
|
+
raise_status(HTTPStatus.NOT_FOUND, "Workflow does not exist")
|
|
90
|
+
|
|
91
|
+
task_name = RESUME_TASK if wf_table.is_task else RESUME_WORKFLOW
|
|
84
92
|
trigger_task = get_celery_task(task_name)
|
|
85
93
|
|
|
86
94
|
user_inputs = user_inputs or [{}]
|
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/processes.py
RENAMED
|
@@ -34,7 +34,6 @@ from orchestrator.services.input_state import store_input_state
|
|
|
34
34
|
from orchestrator.services.settings import get_engine_settings_for_update
|
|
35
35
|
from orchestrator.services.workflows import get_workflow_by_name
|
|
36
36
|
from orchestrator.settings import ExecutorType, app_settings
|
|
37
|
-
from orchestrator.targets import Target
|
|
38
37
|
from orchestrator.types import BroadcastFunc
|
|
39
38
|
from orchestrator.utils.datetime import nowtz
|
|
40
39
|
from orchestrator.utils.errors import error_state_to_dict
|
|
@@ -108,7 +107,7 @@ def _db_create_process(stat: ProcessStat) -> None:
|
|
|
108
107
|
workflow_id=wf_table.workflow_id,
|
|
109
108
|
last_status=ProcessStatus.CREATED,
|
|
110
109
|
created_by=stat.current_user,
|
|
111
|
-
is_task=
|
|
110
|
+
is_task=wf_table.is_task,
|
|
112
111
|
)
|
|
113
112
|
db.session.add(p)
|
|
114
113
|
db.session.commit()
|
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/subscriptions.py
RENAMED
|
@@ -505,6 +505,7 @@ TARGET_DEFAULT_USABLE_MAP: dict[Target, list[str]] = {
|
|
|
505
505
|
Target.MODIFY: ["active"],
|
|
506
506
|
Target.TERMINATE: ["active", "provisioning"],
|
|
507
507
|
Target.SYSTEM: ["active"],
|
|
508
|
+
Target.VALIDATE: ["active"],
|
|
508
509
|
}
|
|
509
510
|
|
|
510
511
|
WF_USABLE_MAP: dict[str, list[str]] = {}
|
|
@@ -530,6 +531,7 @@ def subscription_workflows(subscription: SubscriptionTable) -> dict[str, Any]:
|
|
|
530
531
|
... "modify": [],
|
|
531
532
|
... "terminate": [],
|
|
532
533
|
... "system": [],
|
|
534
|
+
... "validate": [],
|
|
533
535
|
... }
|
|
534
536
|
|
|
535
537
|
"""
|
|
@@ -549,9 +551,10 @@ def subscription_workflows(subscription: SubscriptionTable) -> dict[str, Any]:
|
|
|
549
551
|
"modify": [],
|
|
550
552
|
"terminate": [],
|
|
551
553
|
"system": [],
|
|
554
|
+
"validate": [],
|
|
552
555
|
}
|
|
553
556
|
for workflow in subscription.product.workflows:
|
|
554
|
-
if workflow.name in WF_USABLE_WHILE_OUT_OF_SYNC or workflow.
|
|
557
|
+
if workflow.name in WF_USABLE_WHILE_OUT_OF_SYNC or workflow.is_task:
|
|
555
558
|
# validations and modify note are also possible with: not in sync or locked relations
|
|
556
559
|
workflow_json = {"name": workflow.name, "description": workflow.description}
|
|
557
560
|
else:
|
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/orchestrator/services/workflows.py
RENAMED
|
@@ -39,6 +39,7 @@ def _to_workflow_schema(workflow: WorkflowTable, include_steps: bool = False) ->
|
|
|
39
39
|
workflow_id=workflow.workflow_id,
|
|
40
40
|
name=workflow.name,
|
|
41
41
|
target=workflow.target,
|
|
42
|
+
is_task=workflow.is_task,
|
|
42
43
|
description=workflow.description,
|
|
43
44
|
created_at=workflow.created_at,
|
|
44
45
|
**extra_kwargs,
|
|
@@ -63,10 +64,10 @@ def get_workflow_by_name(workflow_name: str) -> WorkflowTable | None:
|
|
|
63
64
|
return db.session.scalar(select(WorkflowTable).where(WorkflowTable.name == workflow_name))
|
|
64
65
|
|
|
65
66
|
|
|
66
|
-
def
|
|
67
|
+
def get_validation_product_workflows_for_subscription(
|
|
67
68
|
subscription: SubscriptionTable,
|
|
68
69
|
) -> list:
|
|
69
|
-
return [workflow.name for workflow in subscription.product.workflows if workflow.target == Target.
|
|
70
|
+
return [workflow.name for workflow in subscription.product.workflows if workflow.target == Target.VALIDATE]
|
|
70
71
|
|
|
71
72
|
|
|
72
73
|
def start_validation_workflow_for_workflows(
|
|
@@ -78,9 +79,12 @@ def start_validation_workflow_for_workflows(
|
|
|
78
79
|
result = []
|
|
79
80
|
|
|
80
81
|
for workflow_name in workflows:
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
target_system = TARGET_DEFAULT_USABLE_MAP[Target.SYSTEM]
|
|
83
|
+
system_usable_when = WF_USABLE_MAP.get(workflow_name, target_system)
|
|
84
|
+
target_validate = TARGET_DEFAULT_USABLE_MAP[Target.VALIDATE]
|
|
85
|
+
validate_usable_when = WF_USABLE_MAP.get(workflow_name, target_validate)
|
|
83
86
|
|
|
87
|
+
usable_when = system_usable_when + validate_usable_when
|
|
84
88
|
if subscription.status in usable_when and (
|
|
85
89
|
product_type_filter is None or subscription.product.product_type == product_type_filter
|
|
86
90
|
):
|
|
@@ -22,7 +22,7 @@ from orchestrator.services.subscriptions import (
|
|
|
22
22
|
get_subscriptions_on_product_table_in_sync,
|
|
23
23
|
)
|
|
24
24
|
from orchestrator.services.workflows import (
|
|
25
|
-
|
|
25
|
+
get_validation_product_workflows_for_subscription,
|
|
26
26
|
start_validation_workflow_for_workflows,
|
|
27
27
|
)
|
|
28
28
|
from orchestrator.targets import Target
|
|
@@ -62,7 +62,7 @@ def validate_product_type(product_type: str) -> State:
|
|
|
62
62
|
subscriptions = get_subscriptions_on_product_table_in_sync()
|
|
63
63
|
|
|
64
64
|
for subscription in subscriptions:
|
|
65
|
-
system_product_workflows =
|
|
65
|
+
system_product_workflows = get_validation_product_workflows_for_subscription(
|
|
66
66
|
subscription=subscription,
|
|
67
67
|
)
|
|
68
68
|
|
|
@@ -105,13 +105,10 @@ def check_that_products_have_create_modify_and_terminate_workflows() -> State:
|
|
|
105
105
|
product_data = get_products(filters=[ProductTable.status == "active"])
|
|
106
106
|
|
|
107
107
|
workflows_not_complete: list = []
|
|
108
|
+
targets = ["CREATE", "TERMINATE", "MODIFY", "VALIDATE"]
|
|
108
109
|
for product in product_data:
|
|
109
|
-
workflows = {
|
|
110
|
-
|
|
111
|
-
for c in product.workflows
|
|
112
|
-
if c.target in ["CREATE", "TERMINATE", "MODIFY", "SYSTEM"] and c.name != "modify_note"
|
|
113
|
-
}
|
|
114
|
-
if len(workflows) < 4:
|
|
110
|
+
workflows = {c.target for c in product.workflows if c.target in targets and c.name != "modify_note"}
|
|
111
|
+
if len(workflows) < len(targets):
|
|
115
112
|
workflows_not_complete.append(product.name)
|
|
116
113
|
|
|
117
114
|
# Do not raise an error but only report it in the `State` to allow exceptions.
|
|
@@ -344,7 +344,7 @@ def validate_workflow(description: str) -> Callable[[Callable[[], StepList]], Wo
|
|
|
344
344
|
def _validate_workflow(f: Callable[[], StepList]) -> Workflow:
|
|
345
345
|
steplist = init >> store_process_subscription(Target.SYSTEM) >> unsync_unchecked >> f() >> resync >> done
|
|
346
346
|
|
|
347
|
-
return make_workflow(f, description, validate_initial_input_form_generator, Target.
|
|
347
|
+
return make_workflow(f, description, validate_initial_input_form_generator, Target.VALIDATE, steplist)
|
|
348
348
|
|
|
349
349
|
return _validate_workflow
|
|
350
350
|
|
|
@@ -49,24 +49,28 @@ new_workflows = [
|
|
|
49
49
|
{
|
|
50
50
|
"name": "create_example2",
|
|
51
51
|
"target": Target.CREATE,
|
|
52
|
+
"is_task": False,
|
|
52
53
|
"description": "Create example2",
|
|
53
54
|
"product_type": "Example2",
|
|
54
55
|
},
|
|
55
56
|
{
|
|
56
57
|
"name": "modify_example2",
|
|
57
58
|
"target": Target.MODIFY,
|
|
59
|
+
"is_task": False,
|
|
58
60
|
"description": "Modify example2",
|
|
59
61
|
"product_type": "Example2",
|
|
60
62
|
},
|
|
61
63
|
{
|
|
62
64
|
"name": "terminate_example2",
|
|
63
65
|
"target": Target.TERMINATE,
|
|
66
|
+
"is_task": False,
|
|
64
67
|
"description": "Terminate example2",
|
|
65
68
|
"product_type": "Example2",
|
|
66
69
|
},
|
|
67
70
|
{
|
|
68
71
|
"name": "validate_example2",
|
|
69
|
-
"target": Target.
|
|
72
|
+
"target": Target.VALIDATE,
|
|
73
|
+
"is_task": True,
|
|
70
74
|
"description": "Validate example2",
|
|
71
75
|
"product_type": "Example2",
|
|
72
76
|
},
|
|
@@ -91,24 +91,28 @@ new_workflows = [
|
|
|
91
91
|
{
|
|
92
92
|
"name": "create_example1",
|
|
93
93
|
"target": Target.CREATE,
|
|
94
|
+
"is_task": False,
|
|
94
95
|
"description": "Create example1",
|
|
95
96
|
"product_type": "Example1",
|
|
96
97
|
},
|
|
97
98
|
{
|
|
98
99
|
"name": "modify_example1",
|
|
99
100
|
"target": Target.MODIFY,
|
|
101
|
+
"is_task": False,
|
|
100
102
|
"description": "Modify example1",
|
|
101
103
|
"product_type": "Example1",
|
|
102
104
|
},
|
|
103
105
|
{
|
|
104
106
|
"name": "terminate_example1",
|
|
105
107
|
"target": Target.TERMINATE,
|
|
108
|
+
"is_task": False,
|
|
106
109
|
"description": "Terminate example1",
|
|
107
110
|
"product_type": "Example1",
|
|
108
111
|
},
|
|
109
112
|
{
|
|
110
113
|
"name": "validate_example1",
|
|
111
|
-
"target": Target.
|
|
114
|
+
"target": Target.VALIDATE,
|
|
115
|
+
"is_task": True,
|
|
112
116
|
"description": "Validate example1",
|
|
113
117
|
"product_type": "Example1",
|
|
114
118
|
},
|
|
@@ -61,24 +61,28 @@ new_workflows = [
|
|
|
61
61
|
{
|
|
62
62
|
"name": "create_example4",
|
|
63
63
|
"target": Target.CREATE,
|
|
64
|
+
"is_task": False,
|
|
64
65
|
"description": "Create example4",
|
|
65
66
|
"product_type": "Example4",
|
|
66
67
|
},
|
|
67
68
|
{
|
|
68
69
|
"name": "modify_example4",
|
|
69
70
|
"target": Target.MODIFY,
|
|
71
|
+
"is_task": False,
|
|
70
72
|
"description": "Modify example4",
|
|
71
73
|
"product_type": "Example4",
|
|
72
74
|
},
|
|
73
75
|
{
|
|
74
76
|
"name": "terminate_example4",
|
|
75
77
|
"target": Target.TERMINATE,
|
|
78
|
+
"is_task": False,
|
|
76
79
|
"description": "Terminate example4",
|
|
77
80
|
"product_type": "Example4",
|
|
78
81
|
},
|
|
79
82
|
{
|
|
80
83
|
"name": "validate_example4",
|
|
81
|
-
"target": Target.
|
|
84
|
+
"target": Target.VALIDATE,
|
|
85
|
+
"is_task": True,
|
|
82
86
|
"description": "Validate example4",
|
|
83
87
|
"product_type": "Example4",
|
|
84
88
|
},
|
{orchestrator_core-4.0.0rc1 → orchestrator_core-4.0.0rc2}/test/unit_tests/workflows/__init__.py
RENAMED
|
@@ -12,6 +12,7 @@ import structlog
|
|
|
12
12
|
from orchestrator.db import ProcessTable, WorkflowTable, db
|
|
13
13
|
from orchestrator.services.input_state import store_input_state
|
|
14
14
|
from orchestrator.services.processes import StateMerger, _db_create_process
|
|
15
|
+
from orchestrator.targets import Target
|
|
15
16
|
from orchestrator.utils.json import json_dumps, json_loads
|
|
16
17
|
from orchestrator.workflow import Process as WFProcess
|
|
17
18
|
from orchestrator.workflow import ProcessStat, Step, Success, Workflow, runwf
|
|
@@ -24,7 +25,8 @@ logger = structlog.get_logger(__name__)
|
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
def store_workflow(wf: Workflow, name: str | None = None) -> WorkflowTable:
|
|
27
|
-
|
|
28
|
+
is_task = True if wf.target in [Target.VALIDATE, Target.SYSTEM] else False
|
|
29
|
+
wf_table = WorkflowTable(name=name or wf.name, target=wf.target, is_task=is_task, description=wf.description)
|
|
28
30
|
db.session.add(wf_table)
|
|
29
31
|
db.session.commit()
|
|
30
32
|
return wf_table
|