orchestrator-core 4.0.3__tar.gz → 4.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.bumpversion.cfg +1 -1
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/PKG-INFO +5 -5
- orchestrator_core-4.1.0/docs/reference-docs/app/settings_overview.md +89 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/auth-backend-and-frontend.md +317 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/cli.md +0 -1
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/mkdocs.yml +1 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/__init__.py +1 -1
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/processes.py +61 -11
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/settings.py +12 -1
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/helpers.py +14 -8
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/celery.py +7 -2
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/processes.py +1 -10
- orchestrator_core-4.1.0/orchestrator/services/settings_env_variables.py +68 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/settings.py +11 -2
- orchestrator_core-4.1.0/orchestrator/utils/auth.py +9 -0
- orchestrator_core-4.1.0/orchestrator/utils/expose_settings.py +45 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflow.py +45 -7
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/steps.py +3 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/utils.py +10 -4
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/pyproject.toml +4 -4
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_processes.py +162 -1
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_settings.py +22 -0
- orchestrator_core-4.1.0/test/unit_tests/db/test_migration_does_column_exist.py +10 -0
- orchestrator_core-4.1.0/test/unit_tests/services/test_expose_settings.py +35 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.coveragerc +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/dependabot.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/README.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/build-push-container.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/changelog.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/codeql-analysis.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/gh-pages.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/issues.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/publish-package.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/run-codspeed-tests.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/run-linting-tests.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/run-unit-tests.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.github/workflows/scheduled-build.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.gitignore +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.pre-commit-config.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/.stignore +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/CHANGELOG.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/Dockerfile +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/LICENSE +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/NOTICE +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/README.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/codecov.yml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/application/domainmodels.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/application/forms-frontend.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/application/tasks.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/application/workflow.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/framework.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/img/base-orchestrator-setup.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/img/custom-orchestrator-setup.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/orchestration/orchestrator-ui.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/orchestration/philosophy.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/backfilling.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/context.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/imports.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/introduction.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/ip_static.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/ip_static.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/l2_point_to_point.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/l2_vpn.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/l2_vpn.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/modelling.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/node.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/node.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/port.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/port.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/product_block_graph.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/product_block_graph.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/standards.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/product_modelling/terminology.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/architecture/tldr.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/contributing/development.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/contributing/guidelines.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/contributing/testing.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/css/custom.css +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/css/style.css +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/css/termynal.css +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/getting-started/base.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/getting-started/docker.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/getting-started/orchestration-ui.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/getting-started/prepare-source-folder.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/getting-started/versions.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/img/WFO-Emblem-White.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/img/favicon.ico +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/index.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/js/custom.js +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/js/termynal.js +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/migration-guide/2.0.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/migration-guide/3.0.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/migration-guide/4.0.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/api.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/app/app.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/app/scaling.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/database.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/generator.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/instantiating.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/model_attributes.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/overview.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/product_blocks.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/product_types.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/properties.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/type_casting.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/union_types.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/domain_models/validation.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/forms.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/graphql.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/metrics.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/python.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/search.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/search_overview.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/serialization.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/tasks.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/tests.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/tldr.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/websockets.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/workflows/callbacks.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/workflows/workflow-lifecycles.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/workflows/workflow-steps.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/bootstrap.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/create-your-own.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/docker-installation.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/domain-models.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/execute-workflows.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/generator.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/l2_point_to_point.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/node-create.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/node-modify.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/node-terminate.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/node-validate.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/overview.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/scenario.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/workflow-basics.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/advanced/workflow-introduction.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/create-user-group.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/create-user.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/database-migration.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/debian.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/docker.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/domain-models.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/explore.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/input-forms.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/macos.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/modify-user-group.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/modify-user.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/register-workflows.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/start-applications.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/terminate-user-group.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/terminate-user.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/workflow-introduction.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/beginner/workshop-overview.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/images/Software-topology.drawio.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/images/clab_topology.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/images/metadata_products.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/images/netbox_devices_active.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/images/subscriptions.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/workshops/images/topology.drawio.png +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/includes/abbreviations.md +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/nitpick-style.toml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/api.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/health.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/user.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/error_handling.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/models.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/app.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/database.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generate.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/README +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/enums.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/migration.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/product_block.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/settings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/translations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/unittest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/validations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/generator/workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/enums.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/macros.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/product.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/helpers/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/helpers/input_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/helpers/print_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/main.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/migrate_domain_models.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/migrate_tasks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/migrate_workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/migration_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/cli/scheduler.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/config/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/config/assignee.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/database.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/filters.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/product_block.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/resource_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/search_filters/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/filters/workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/listeners.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/loaders.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/models.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/queries/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/queries/subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/queries/subscription_instance.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/range/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/range/range.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/product_block.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/resource_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/sorting.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/db/sorting/workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/devtools/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/devtools/populator.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/devtools/scripts/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/devtools/scripts/migrate_20.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/devtools/scripts/migrate_30.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/devtools/scripts/shared.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/distlock/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/distlock/distlock_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/distlock/managers/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/base.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/context_cache.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/customer_description.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/lifecycle.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/domain/subscription_instance_transform.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/exception_handlers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/validators/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/validators/customer_contact_list.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/validators/customer_id.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/validators/display_subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/validators/network_type_validators.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/forms/validators/product_id.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/autoregistration.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/extensions/model_cache.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/extensions/stats.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/loaders/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/loaders/subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/mutations/customer_description.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/mutations/start_process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/pagination.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/customer.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/product_block.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/resource_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/settings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/version.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/resolvers/workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schema.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/customer.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/customer_description.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/errors.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/product_block.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/resource_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/settings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/version.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/schemas/workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/override_class.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/log_config.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/metrics/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/metrics/engine.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/metrics/init.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/metrics/processes.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/metrics/subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/README +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/alembic.ini +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/env.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/script.py.mako +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/templates/env.py.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/py.typed +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schedules/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schedules/resume_workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schedules/scheduling.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schedules/task_vacuum.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schedules/validate_products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schedules/validate_subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/base.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/engine_settings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/problem_detail.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/product_block.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/resource_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/subscription_descriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/schemas/workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/security.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/fixed_inputs.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/input_state.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/process_broadcast_thread.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/resource_types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/settings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/subscription_relations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/tasks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/translations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/services/workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/targets.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/crypt.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/datetime.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/deprecation_logger.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/docs.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/enrich_process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/errors.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/fixed_inputs.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/functional.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/get_updated_properties.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/json.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/redis.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/redis_client.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/search_query.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/state.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/strings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/utils/validate_data_version.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/version.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/websocket/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/websocket/websocket_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/modify_note.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/removed_workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/tasks/validate_products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/workflows/translations/en-GB.json +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/setup.cfg +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/setup.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/conftest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/acceptance_tests/test_test_product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_health.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_models.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_processes_ws.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_product_blocks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_resource_types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/api/test_ws.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/conftest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/alembic.ini +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/main.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/env.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate/workflows/shared.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/generate.sh +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/product_config1.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/product_config2.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/product_config3.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/data/product_config4.yaml +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/generator/test_enums.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/test_cli_generate.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/test_config_validation.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/test_generate_code.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/config.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/conftest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/db/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/db/test_listeners.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_base.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_base_multiple.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_base_performance.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_base_serializable_property.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_base_with_list_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_base_with_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/domain/test_lifecycle.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/processes.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/products/resource_types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/fixtures/workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/forms/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/forms/test_customer_contact_list.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/forms/test_customer_id.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/forms/test_display_subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/forms/test_generic_validators.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/conftest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/extensions/test_stats.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/mutations/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/mutations/test_customer_description.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/mutations/test_start_process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_customer.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_process.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_processes.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_product.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_product_blocks.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_resource_types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_settings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_subscription.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_subscription_relations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_version.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/test_workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/fixtures.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/test_autoregistration.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/graphql/utils/test_override_class.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/helpers.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/metrics/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/metrics/conftest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/metrics/test_engine_metrics.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/metrics/test_process_metrics.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/metrics/test_subscription_metrics.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/migrations/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/migrations/test_cascade_constraint.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/schedules/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/schedules/test_scheduling.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/test_input_state.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/test_processes.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/test_products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/test_subscription_relations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/test_subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/services/test_translations.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/test_db.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/test_types.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/test_workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_datetime.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_errors.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_functional.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_get_updated_properties.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_json.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_search_query.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_state.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/utils/test_strings.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/websocket/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/websocket/test_broadcast.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/conftest.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/shared/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/tasks/test_validate_products.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/test_async_workflow.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/test_config_db_code.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -0
- {orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/test/unit_tests/workflows/test_modify_note.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orchestrator-core
|
|
3
|
-
Version: 4.0
|
|
3
|
+
Version: 4.1.0
|
|
4
4
|
Summary: This is the orchestrator workflow engine.
|
|
5
5
|
Requires-Python: >=3.11,<3.14
|
|
6
6
|
Classifier: Intended Audience :: Information Technology
|
|
@@ -28,7 +28,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
28
28
|
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
|
29
29
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
30
30
|
License-File: LICENSE
|
|
31
|
-
Requires-Dist: alembic==1.
|
|
31
|
+
Requires-Dist: alembic==1.16.1
|
|
32
32
|
Requires-Dist: anyio>=3.7.0
|
|
33
33
|
Requires-Dist: click==8.*
|
|
34
34
|
Requires-Dist: deprecated
|
|
@@ -39,7 +39,7 @@ Requires-Dist: more-itertools~=10.7.0
|
|
|
39
39
|
Requires-Dist: itsdangerous
|
|
40
40
|
Requires-Dist: Jinja2==3.1.6
|
|
41
41
|
Requires-Dist: orjson==3.10.18
|
|
42
|
-
Requires-Dist: prometheus-client==0.
|
|
42
|
+
Requires-Dist: prometheus-client==0.22.1
|
|
43
43
|
Requires-Dist: psycopg2-binary==2.9.10
|
|
44
44
|
Requires-Dist: pydantic[email]~=2.8.2
|
|
45
45
|
Requires-Dist: pydantic-settings~=2.9.1
|
|
@@ -49,7 +49,7 @@ Requires-Dist: pytz==2025.2
|
|
|
49
49
|
Requires-Dist: redis==5.1.1
|
|
50
50
|
Requires-Dist: schedule==1.1.0
|
|
51
51
|
Requires-Dist: semver==3.0.4
|
|
52
|
-
Requires-Dist: sentry-sdk[fastapi]~=2.
|
|
52
|
+
Requires-Dist: sentry-sdk[fastapi]~=2.29.1
|
|
53
53
|
Requires-Dist: SQLAlchemy==2.0.41
|
|
54
54
|
Requires-Dist: SQLAlchemy-Utils==0.41.2
|
|
55
55
|
Requires-Dist: structlog
|
|
@@ -84,7 +84,7 @@ Requires-Dist: dirty-equals ; extra == "test"
|
|
|
84
84
|
Requires-Dist: jsonref ; extra == "test"
|
|
85
85
|
Requires-Dist: mypy==1.9 ; extra == "test"
|
|
86
86
|
Requires-Dist: pyinstrument ; extra == "test"
|
|
87
|
-
Requires-Dist: pytest==8.
|
|
87
|
+
Requires-Dist: pytest==8.4.1 ; extra == "test"
|
|
88
88
|
Requires-Dist: pytest-asyncio==0.21.2 ; extra == "test"
|
|
89
89
|
Requires-Dist: pytest-codspeed ; extra == "test"
|
|
90
90
|
Requires-Dist: pytest-cov ; extra == "test"
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Settings overview in Orchestrator
|
|
2
|
+
|
|
3
|
+
You can use the `api/settings/overview` endpoint to get an overview of the settings that are used in the application.
|
|
4
|
+
This endpoint provides a JSON response that contains the settings that are defined in the application. The settings are
|
|
5
|
+
grouped by their names and sensitive values are masked for security reasons.
|
|
6
|
+
Per default, the application settings are used to configure the application. The settings are defined in the
|
|
7
|
+
`orchestrator.settings.py` module and can be used to configure the application.
|
|
8
|
+
|
|
9
|
+
An example of the settings is shown below:
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from orchestrator.settings import BaseSettings
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AppSettings(BaseSettings):
|
|
16
|
+
TESTING: bool = True
|
|
17
|
+
SESSION_SECRET: OrchSecretStr = "".join(secrets.choice(string.ascii_letters) for i in range(16)) # type: ignore
|
|
18
|
+
CORS_ORIGINS: str = "*"
|
|
19
|
+
...
|
|
20
|
+
EXPOSE_SETTINGS: bool = False
|
|
21
|
+
EXPOSE_OAUTH_SETTINGS: bool = False
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
app_settings = AppSettings()
|
|
25
|
+
|
|
26
|
+
if app_settings.EXPOSE_SETTINGS:
|
|
27
|
+
expose_settings("app_settings", app_settings) # type: ignore
|
|
28
|
+
|
|
29
|
+
if app_settings.EXPOSE_OAUTH_SETTINGS:
|
|
30
|
+
expose_settings("oauth2lib_settings", oauth2lib_settings) # type: ignore
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
What you see above is the default settings for the application. The settings are defined in the
|
|
34
|
+
`orchestrator.settings.py` module and can be used to configure the application.
|
|
35
|
+
The `EXPOSE_SETTINGS` and `EXPOSE_OAUTH_SETTINGS` flags are used to control whether the settings should be exposed via
|
|
36
|
+
the `api/settings/overview` endpoint, the result looks like this:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
"name": "app_settings",
|
|
42
|
+
"variables": [
|
|
43
|
+
{
|
|
44
|
+
"env_name": "TESTING",
|
|
45
|
+
"env_value": false
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"env_name": "SESSION_SECRET",
|
|
49
|
+
"env_value": "**********"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"env_name": "CORS_ORIGINS",
|
|
53
|
+
"env_value": "*"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The `app_settings` in the example above is a name of the settings class that is registered to be exposed.
|
|
61
|
+
|
|
62
|
+
## Exposing your settings
|
|
63
|
+
|
|
64
|
+
In order to expose your settings, you need to register them using the `expose_settings()` function. This function takes
|
|
65
|
+
two arguments: the name of the settings class and the instance of the settings class.
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from orchestrator.settings import expose_settings, BaseSettings
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class MySettings(BaseSettings):
|
|
72
|
+
debug: bool = True
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
my_settings = MySettings()
|
|
76
|
+
|
|
77
|
+
expose_settings("my_settings", my_settings)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Masking Secrets
|
|
81
|
+
|
|
82
|
+
The following rules apply when exposing settings:
|
|
83
|
+
|
|
84
|
+
### Rules for Masking Secrets
|
|
85
|
+
|
|
86
|
+
- Keys containing `"password"` or `"secret"` in their names are masked.
|
|
87
|
+
- `SecretStr` from `from pydantic import SecretStr` are masked.
|
|
88
|
+
- `SecretStr` from `from orchestrator.utils.expose_settings import SecretStr` are masked.
|
|
89
|
+
- `PostgresDsn` from `from pydantic import PostgresDsn` are masked.
|
{orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/docs/reference-docs/auth-backend-and-frontend.md
RENAMED
|
@@ -269,6 +269,323 @@ app.register_authorization(authorization_instance)
|
|
|
269
269
|
app.register_graphql_authorization(graphql_authorization_instance)
|
|
270
270
|
```
|
|
271
271
|
|
|
272
|
+
## Authorization and Workflows
|
|
273
|
+
|
|
274
|
+
!!! Warning
|
|
275
|
+
Role-based access control for workflows is currently in beta.
|
|
276
|
+
Initial support has been added to the backend, but the feature is not fully communicated through the UI yet.
|
|
277
|
+
|
|
278
|
+
Certain `orchestrator-core` decorators accept authorization callbacks of type `type Authorizer = Callable[OIDCUserModel, bool]`, which return True when the input user is authorized, otherwise False.
|
|
279
|
+
|
|
280
|
+
A table (below) is available for comparing possible configuration states with the policy that will be enforced.
|
|
281
|
+
|
|
282
|
+
### `@workflow`
|
|
283
|
+
The `@workflow` decorator accepts the optional parameters `auth: Authorizer` and `retry_auth: Authorizer`.
|
|
284
|
+
|
|
285
|
+
`auth` will be used to determine the authorization of a user to start the workflow.
|
|
286
|
+
If `auth` is omitted, the workflow is authorized for any logged in user.
|
|
287
|
+
|
|
288
|
+
`retry_auth` will be used to determine the authorization of a user to start, resume, or retry the workflow from a failed step.
|
|
289
|
+
If `retry_auth` is omitted, then `auth` is used to authorize.
|
|
290
|
+
|
|
291
|
+
(This does not percolate past an `@inputstep` that specifies `resume_auth` or `retry_auth`.)
|
|
292
|
+
|
|
293
|
+
Examples:
|
|
294
|
+
|
|
295
|
+
* `auth=None, retry_auth=None`: any user may run the workflow.
|
|
296
|
+
* `auth=A, retry_auth=B`: users authorized by A may start the workflow. Users authorized by B may retry on failure.
|
|
297
|
+
* Example: starting the workflow is a decision that must be made by a product owner. Retrying can be made by an on-call member of the operations team.
|
|
298
|
+
* `auth=None, retry_auth=B`: any user can start the workflow, but only users authorized by B may retry on failure.
|
|
299
|
+
|
|
300
|
+
### `@inputstep`
|
|
301
|
+
The `@inputstep` decorator accepts the optional parameters `resume_auth: Authorizer` and `retry_auth: Authorizer`.
|
|
302
|
+
|
|
303
|
+
`resume_auth` will be used to determine the authorization of a user to resume the workflow when suspended at this inputstep.
|
|
304
|
+
If `resume_auth` is omitted, then the workflow's `auth` will be used.
|
|
305
|
+
|
|
306
|
+
`retry_auth` will be used to determine the authorization of a user to retry the workflow from a failed step following the inputstep.
|
|
307
|
+
If `retry_auth` is omitted, then `resume_auth` is used to authorize retries.
|
|
308
|
+
If `resume_auth` is also omitted, then the workflow’s `retry_auth` is checked, and then the workflow’s `auth`.
|
|
309
|
+
|
|
310
|
+
In summary:
|
|
311
|
+
|
|
312
|
+
* A workflow establishes `auth` for starting, resuming, or retrying.
|
|
313
|
+
* The workflow can also establish `retry_auth`, which will override `auth` for retries.
|
|
314
|
+
* An inputstep can override the existing `auth` with `resume_auth` and the existing `retry_auth` with its own `retry_auth`.
|
|
315
|
+
* Subsequent inputsteps can do the same, but any None will not overwrite a previous not-None.
|
|
316
|
+
|
|
317
|
+
### Policy resolutions
|
|
318
|
+
Below is an exhaustive table of how policies (implemented as callbacks `A`, `B`, `C`, and `D`)
|
|
319
|
+
are prioritized in different workflow and inputstep configurations.
|
|
320
|
+
|
|
321
|
+
<table>
|
|
322
|
+
<thead>
|
|
323
|
+
<tr>
|
|
324
|
+
<th colspan=4>Configuration</th>
|
|
325
|
+
<th colspan=4>Enforcement</th>
|
|
326
|
+
<th>Notes</th>
|
|
327
|
+
</tr>
|
|
328
|
+
<tr>
|
|
329
|
+
<th colspan=2>@workflow</th>
|
|
330
|
+
<th colspan=2>@inputstep</th>
|
|
331
|
+
<th colspan=2>before @inputstep</th>
|
|
332
|
+
<th colspan=2>@inputstep and after</th>
|
|
333
|
+
<th></th>
|
|
334
|
+
</tr>
|
|
335
|
+
<tr>
|
|
336
|
+
<th>auth</th>
|
|
337
|
+
<th>retry_auth</th>
|
|
338
|
+
<th>resume_auth</th>
|
|
339
|
+
<th>retry_auth</th>
|
|
340
|
+
<th>start</th>
|
|
341
|
+
<th>retry</th>
|
|
342
|
+
<th>resume</th>
|
|
343
|
+
<th>retry</th>
|
|
344
|
+
<th></th>
|
|
345
|
+
</tr>
|
|
346
|
+
</thead>
|
|
347
|
+
<tbody>
|
|
348
|
+
<tr>
|
|
349
|
+
<td>None</td>
|
|
350
|
+
<td>None</td>
|
|
351
|
+
<td>None</td>
|
|
352
|
+
<td>None</td>
|
|
353
|
+
<td>Anyone</td>
|
|
354
|
+
<td>Anyone</td>
|
|
355
|
+
<td>Anyone</td>
|
|
356
|
+
<td>Anyone</td>
|
|
357
|
+
<td>Default</td>
|
|
358
|
+
</tr>
|
|
359
|
+
<tr>
|
|
360
|
+
<td>A</td>
|
|
361
|
+
<td>None</td>
|
|
362
|
+
<td>None</td>
|
|
363
|
+
<td>None</td>
|
|
364
|
+
<td>A</td>
|
|
365
|
+
<td>A</td>
|
|
366
|
+
<td>A</td>
|
|
367
|
+
<td>A</td>
|
|
368
|
+
<td>Broadly restrict the workflow to a specific authorizer.</td>
|
|
369
|
+
</tr>
|
|
370
|
+
<tr>
|
|
371
|
+
<td>None</td>
|
|
372
|
+
<td>B</td>
|
|
373
|
+
<td>None</td>
|
|
374
|
+
<td>None</td>
|
|
375
|
+
<td>Anyone</td>
|
|
376
|
+
<td>B</td>
|
|
377
|
+
<td>Anyone</td>
|
|
378
|
+
<td>B</td>
|
|
379
|
+
<td>original retry_auth is maintained if nothing supercedes it. Weird choice, but this provides a "we specifically want to limit retries" route.</td>
|
|
380
|
+
</tr>
|
|
381
|
+
<tr>
|
|
382
|
+
<td>A</td>
|
|
383
|
+
<td>B</td>
|
|
384
|
+
<td>None</td>
|
|
385
|
+
<td>None</td>
|
|
386
|
+
<td>A</td>
|
|
387
|
+
<td>B</td>
|
|
388
|
+
<td>A</td>
|
|
389
|
+
<td>B</td>
|
|
390
|
+
<td>Workflow-level auth and retry. Allows A or B to be tighter or distinct, as needed.</td>
|
|
391
|
+
</tr>
|
|
392
|
+
<tr>
|
|
393
|
+
<td>None</td>
|
|
394
|
+
<td>None</td>
|
|
395
|
+
<td>C</td>
|
|
396
|
+
<td>None</td>
|
|
397
|
+
<td>Anyone</td>
|
|
398
|
+
<td>Anyone</td>
|
|
399
|
+
<td>C</td>
|
|
400
|
+
<td>C</td>
|
|
401
|
+
<td>Anyone can start this workflow, but only C can continue it.</td>
|
|
402
|
+
</tr>
|
|
403
|
+
<tr>
|
|
404
|
+
<td>A</td>
|
|
405
|
+
<td>None</td>
|
|
406
|
+
<td>C</td>
|
|
407
|
+
<td>None</td>
|
|
408
|
+
<td>A</td>
|
|
409
|
+
<td>A</td>
|
|
410
|
+
<td>C</td>
|
|
411
|
+
<td>C</td>
|
|
412
|
+
<td>Subsequent retries use C, not A! Override with retry_auth=A if desired.</td>
|
|
413
|
+
</tr>
|
|
414
|
+
<tr>
|
|
415
|
+
<td>None</td>
|
|
416
|
+
<td>B</td>
|
|
417
|
+
<td>C</td>
|
|
418
|
+
<td>None</td>
|
|
419
|
+
<td>Anyone</td>
|
|
420
|
+
<td>B</td>
|
|
421
|
+
<td>C</td>
|
|
422
|
+
<td>C</td>
|
|
423
|
+
<td>Subsequent retries use C, not B! Override with retry_auth=B if desired.</td>
|
|
424
|
+
</tr>
|
|
425
|
+
<tr>
|
|
426
|
+
<td>A</td>
|
|
427
|
+
<td>B</td>
|
|
428
|
+
<td>C</td>
|
|
429
|
+
<td>None</td>
|
|
430
|
+
<td>A</td>
|
|
431
|
+
<td>B</td>
|
|
432
|
+
<td>C</td>
|
|
433
|
+
<td>C</td>
|
|
434
|
+
<td>Simple override initial settings with inputstep resume_auth.</td>
|
|
435
|
+
</tr>
|
|
436
|
+
<tr>
|
|
437
|
+
<td>None</td>
|
|
438
|
+
<td>None</td>
|
|
439
|
+
<td>None</td>
|
|
440
|
+
<td>D</td>
|
|
441
|
+
<td>Anyone</td>
|
|
442
|
+
<td>Anyone</td>
|
|
443
|
+
<td>Anyone</td>
|
|
444
|
+
<td>D</td>
|
|
445
|
+
<td>Anyone can start or retry or resume, but limit retries to D once inputstep is reached.</td>
|
|
446
|
+
</tr>
|
|
447
|
+
<tr>
|
|
448
|
+
<td>A</td>
|
|
449
|
+
<td>None</td>
|
|
450
|
+
<td>None</td>
|
|
451
|
+
<td>D</td>
|
|
452
|
+
<td>A</td>
|
|
453
|
+
<td>A</td>
|
|
454
|
+
<td>A</td>
|
|
455
|
+
<td>D</td>
|
|
456
|
+
<td>A can start or retry or resume, but limit retries to D once inputstep is reached.</td>
|
|
457
|
+
</tr>
|
|
458
|
+
<tr>
|
|
459
|
+
<td>None</td>
|
|
460
|
+
<td>B</td>
|
|
461
|
+
<td>None</td>
|
|
462
|
+
<td>D</td>
|
|
463
|
+
<td>Anyone</td>
|
|
464
|
+
<td>B</td>
|
|
465
|
+
<td>Anyone</td>
|
|
466
|
+
<td>D</td>
|
|
467
|
+
<td>Anyone can start or resume, but only B can retry. After inputstep, only D can retry.</td>
|
|
468
|
+
</tr>
|
|
469
|
+
<tr>
|
|
470
|
+
<td>A</td>
|
|
471
|
+
<td>B</td>
|
|
472
|
+
<td>None</td>
|
|
473
|
+
<td>D</td>
|
|
474
|
+
<td>A</td>
|
|
475
|
+
<td>B</td>
|
|
476
|
+
<td>A</td>
|
|
477
|
+
<td>D</td>
|
|
478
|
+
<td>A can start or resume, but only B can retry. After inputstep, only D can retry.</td>
|
|
479
|
+
</tr>
|
|
480
|
+
<tr>
|
|
481
|
+
<td>None</td>
|
|
482
|
+
<td>None</td>
|
|
483
|
+
<td>C</td>
|
|
484
|
+
<td>D</td>
|
|
485
|
+
<td>Anyone</td>
|
|
486
|
+
<td>Anyone</td>
|
|
487
|
+
<td>C</td>
|
|
488
|
+
<td>D</td>
|
|
489
|
+
<td>Anyone can start, but only C can resume and only D can retry after the resume.</td>
|
|
490
|
+
</tr>
|
|
491
|
+
<tr>
|
|
492
|
+
<td>A</td>
|
|
493
|
+
<td>None</td>
|
|
494
|
+
<td>C</td>
|
|
495
|
+
<td>D</td>
|
|
496
|
+
<td>A</td>
|
|
497
|
+
<td>A</td>
|
|
498
|
+
<td>C</td>
|
|
499
|
+
<td>D</td>
|
|
500
|
+
<td></td>
|
|
501
|
+
</tr>
|
|
502
|
+
<tr>
|
|
503
|
+
<td>None</td>
|
|
504
|
+
<td>B</td>
|
|
505
|
+
<td>C</td>
|
|
506
|
+
<td>D</td>
|
|
507
|
+
<td>Anyone</td>
|
|
508
|
+
<td>B</td>
|
|
509
|
+
<td>C</td>
|
|
510
|
+
<td>D</td>
|
|
511
|
+
<td></td>
|
|
512
|
+
</tr>
|
|
513
|
+
<tr>
|
|
514
|
+
<td>A</td>
|
|
515
|
+
<td>B</td>
|
|
516
|
+
<td>C</td>
|
|
517
|
+
<td>D</td>
|
|
518
|
+
<td>A</td>
|
|
519
|
+
<td>B</td>
|
|
520
|
+
<td>C</td>
|
|
521
|
+
<td>D</td>
|
|
522
|
+
<td></td>
|
|
523
|
+
</tr>
|
|
524
|
+
</tbody>
|
|
525
|
+
</table>
|
|
526
|
+
|
|
527
|
+
### Examples
|
|
528
|
+
Assume we have the following function that can be used to create callbacks:
|
|
529
|
+
|
|
530
|
+
```python
|
|
531
|
+
def allow_roles(*roles) -> Callable[OIDCUserModel|None, bool]:
|
|
532
|
+
def f(user: OIDCUserModel) -> bool:
|
|
533
|
+
if is_admin(user): # Relative to your authorization provider
|
|
534
|
+
return True
|
|
535
|
+
for role in roles:
|
|
536
|
+
if has_role(user, role): # Relative to your authorization provider
|
|
537
|
+
return True
|
|
538
|
+
return False
|
|
539
|
+
|
|
540
|
+
return f
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
We can now construct a variety of authorization policies.
|
|
544
|
+
|
|
545
|
+
#### Rubber Stamp Model
|
|
546
|
+
!!!example
|
|
547
|
+
Suppose we have a workflow W that needs to pause on inputstep `approval` for approval from finance. Ops (and only ops) should be able to start the workflow and retry any failed steps. Finance (and only finance) should be able to resume at the input step.
|
|
548
|
+
|
|
549
|
+
```python
|
|
550
|
+
@workflow("An expensive workflow", auth=allow_roles("ops"))
|
|
551
|
+
def W(...):
|
|
552
|
+
return begin >> A >> ... >> notify_finance >> approval >> ... >> Z
|
|
553
|
+
|
|
554
|
+
@inputstep("Approval", resume_auth=allow_roles("finance"), retry_auth=allow_roles("ops"))
|
|
555
|
+
def approval(...):
|
|
556
|
+
...
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
#### Hand-off Model
|
|
561
|
+
!!!example
|
|
562
|
+
Suppose we have two teams, Dev and Platform, and a long workflow W that should be handed off to Platform at step `approval`.
|
|
563
|
+
|
|
564
|
+
Dev can start the workflow and retry steps prior to S. Once step S is reached, Platform (and only Platform) can resume the workflow and retry later failed steps.
|
|
565
|
+
|
|
566
|
+
```python
|
|
567
|
+
@workflow("An expensive workflow", auth=allow_roles("dev"))
|
|
568
|
+
def W(...):
|
|
569
|
+
return begin >> A >> ... >> notify_platform >> handoff >> ... >> Z
|
|
570
|
+
|
|
571
|
+
@inputstep("Hand-off", resume_auth=allow_roles("platform"))
|
|
572
|
+
def handoff(...):
|
|
573
|
+
...
|
|
574
|
+
```
|
|
575
|
+
Notice that default behaviors let us ignore `retry_auth` arguments in both decorators.
|
|
576
|
+
|
|
577
|
+
#### Restricted Retries Model
|
|
578
|
+
!!!example
|
|
579
|
+
Suppose we have a workflow that anyone can run, but with steps that should only be retried by users with certain backend access.
|
|
580
|
+
|
|
581
|
+
```python
|
|
582
|
+
@workflow("A workflow for any user", retry_auth=allow_roles("admin"))
|
|
583
|
+
def W(...):
|
|
584
|
+
return begin >> A >> ... >> S >> ... >> Z
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
Note that we could specify `auth=allow_roles("user")` if helpful, or we can omit `auth` to fail open to any logged in user.
|
|
588
|
+
|
|
272
589
|
[1]: https://github.com/workfloworchestrator/example-orchestrator-ui
|
|
273
590
|
[2]: https://github.com/workfloworchestrator/example-orchestrator
|
|
274
591
|
[3]: https://next-auth.js.org/
|
|
@@ -182,6 +182,7 @@ nav:
|
|
|
182
182
|
- App.py: reference-docs/app/app.md
|
|
183
183
|
- Python Version: reference-docs/python.md
|
|
184
184
|
- Scaling: reference-docs/app/scaling.md
|
|
185
|
+
- Settings: reference-docs/app/settings_overview.md
|
|
185
186
|
# - Tasks: reference-docs/tasks.md
|
|
186
187
|
# - Tests: reference-docs/tests.md
|
|
187
188
|
- Workflows:
|
{orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/processes.py
RENAMED
|
@@ -25,7 +25,7 @@ from fastapi.param_functions import Body, Depends, Header
|
|
|
25
25
|
from fastapi.routing import APIRouter
|
|
26
26
|
from fastapi.websockets import WebSocket
|
|
27
27
|
from fastapi_etag.dependency import CacheHit
|
|
28
|
-
from more_itertools import chunked
|
|
28
|
+
from more_itertools import chunked, last
|
|
29
29
|
from sentry_sdk.tracing import trace
|
|
30
30
|
from sqlalchemy import CompoundSelect, Select, select
|
|
31
31
|
from sqlalchemy.orm import defer, joinedload
|
|
@@ -56,6 +56,7 @@ from orchestrator.services.processes import (
|
|
|
56
56
|
)
|
|
57
57
|
from orchestrator.services.settings import get_engine_settings
|
|
58
58
|
from orchestrator.settings import app_settings
|
|
59
|
+
from orchestrator.utils.auth import Authorizer
|
|
59
60
|
from orchestrator.utils.enrich_process import enrich_process
|
|
60
61
|
from orchestrator.websocket import (
|
|
61
62
|
WS_CHANNELS,
|
|
@@ -63,7 +64,7 @@ from orchestrator.websocket import (
|
|
|
63
64
|
broadcast_process_update_to_websocket,
|
|
64
65
|
websocket_manager,
|
|
65
66
|
)
|
|
66
|
-
from orchestrator.workflow import ProcessStatus
|
|
67
|
+
from orchestrator.workflow import ProcessStat, ProcessStatus, StepList, Workflow
|
|
67
68
|
from pydantic_forms.types import JSON, State
|
|
68
69
|
|
|
69
70
|
router = APIRouter()
|
|
@@ -86,6 +87,48 @@ def check_global_lock() -> None:
|
|
|
86
87
|
)
|
|
87
88
|
|
|
88
89
|
|
|
90
|
+
def get_current_steps(pstat: ProcessStat) -> StepList:
|
|
91
|
+
"""Extract past and current steps from the ProcessStat."""
|
|
92
|
+
remaining_steps = pstat.log
|
|
93
|
+
past_steps = pstat.workflow.steps[: -len(remaining_steps)]
|
|
94
|
+
return StepList(past_steps + [pstat.log[0]])
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def get_auth_callbacks(steps: StepList, workflow: Workflow) -> tuple[Authorizer | None, Authorizer | None]:
|
|
98
|
+
"""Iterate over workflow and prior steps to determine correct authorization callbacks for the current step.
|
|
99
|
+
|
|
100
|
+
It's safest to always iterate through the steps. We could track these callbacks statefully
|
|
101
|
+
as we progress through the workflow, but if we fail a step and the system restarts, the previous
|
|
102
|
+
callbacks will be lost if they're only available in the process state.
|
|
103
|
+
|
|
104
|
+
Priority:
|
|
105
|
+
- RESUME callback is explicit RESUME callback, else previous START/RESUME callback
|
|
106
|
+
- RETRY callback is explicit RETRY, else explicit RESUME, else previous RETRY
|
|
107
|
+
"""
|
|
108
|
+
# Default to workflow start callbacks
|
|
109
|
+
auth_resume = workflow.authorize_callback
|
|
110
|
+
# auth_retry defaults to the workflow start callback if not otherwise specified.
|
|
111
|
+
# A workflow SHOULD have both callbacks set to not-None. This enforces the correct default regardless.
|
|
112
|
+
auth_retry = workflow.retry_auth_callback or auth_resume # type: ignore[unreachable, truthy-function]
|
|
113
|
+
|
|
114
|
+
# Choose the most recently established value for resume.
|
|
115
|
+
auth_resume = last(filter(None, (step.resume_auth_callback for step in steps)), auth_resume)
|
|
116
|
+
# Choose the most recently established value for retry, unless there is a more recent value for resume.
|
|
117
|
+
auth_retry = last(
|
|
118
|
+
filter(None, (step.retry_auth_callback or step.resume_auth_callback for step in steps)), auth_retry
|
|
119
|
+
)
|
|
120
|
+
return auth_resume, auth_retry
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def can_be_resumed(status: ProcessStatus) -> bool:
|
|
124
|
+
return status in (
|
|
125
|
+
ProcessStatus.SUSPENDED, # Can be resumed
|
|
126
|
+
ProcessStatus.FAILED, # Can be retried
|
|
127
|
+
ProcessStatus.API_UNAVAILABLE, # subtype of FAILED
|
|
128
|
+
ProcessStatus.INCONSISTENT_DATA, # subtype of FAILED
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
|
|
89
132
|
def resolve_user_name(
|
|
90
133
|
*,
|
|
91
134
|
reporter: Reporter | None,
|
|
@@ -150,18 +193,25 @@ def new_process(
|
|
|
150
193
|
dependencies=[Depends(check_global_lock, use_cache=False)],
|
|
151
194
|
)
|
|
152
195
|
def resume_process_endpoint(
|
|
153
|
-
process_id: UUID,
|
|
196
|
+
process_id: UUID,
|
|
197
|
+
request: Request,
|
|
198
|
+
json_data: JSON = Body(...),
|
|
199
|
+
user: str = Depends(user_name),
|
|
200
|
+
user_model: OIDCUserModel | None = Depends(authenticate),
|
|
154
201
|
) -> None:
|
|
155
202
|
process = _get_process(process_id)
|
|
156
203
|
|
|
157
|
-
if process.last_status
|
|
158
|
-
raise_status(HTTPStatus.CONFLICT, "Resuming a
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
204
|
+
if not can_be_resumed(process.last_status):
|
|
205
|
+
raise_status(HTTPStatus.CONFLICT, f"Resuming a {process.last_status.lower()} workflow is not possible")
|
|
206
|
+
|
|
207
|
+
pstat = load_process(process)
|
|
208
|
+
auth_resume, auth_retry = get_auth_callbacks(get_current_steps(pstat), pstat.workflow)
|
|
209
|
+
if process.last_status == ProcessStatus.SUSPENDED:
|
|
210
|
+
if auth_resume is not None and not auth_resume(user_model):
|
|
211
|
+
raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to resume step")
|
|
212
|
+
elif process.last_status == ProcessStatus.FAILED:
|
|
213
|
+
if auth_retry is not None and not auth_retry(user_model):
|
|
214
|
+
raise_status(HTTPStatus.FORBIDDEN, "User is not authorized to retry step")
|
|
165
215
|
|
|
166
216
|
broadcast_invalidate_status_counts()
|
|
167
217
|
broadcast_func = api_broadcast_process_data(request)
|
{orchestrator_core-4.0.3 → orchestrator_core-4.1.0}/orchestrator/api/api_v1/endpoints/settings.py
RENAMED
|
@@ -22,11 +22,17 @@ from sqlalchemy.exc import SQLAlchemyError
|
|
|
22
22
|
from oauth2_lib.fastapi import OIDCUserModel
|
|
23
23
|
from orchestrator.api.error_handling import raise_status
|
|
24
24
|
from orchestrator.db import EngineSettingsTable
|
|
25
|
-
from orchestrator.schemas import
|
|
25
|
+
from orchestrator.schemas import (
|
|
26
|
+
EngineSettingsBaseSchema,
|
|
27
|
+
EngineSettingsSchema,
|
|
28
|
+
WorkerStatus,
|
|
29
|
+
)
|
|
26
30
|
from orchestrator.security import authenticate
|
|
27
31
|
from orchestrator.services import processes, settings
|
|
28
32
|
from orchestrator.services.settings import generate_engine_global_status
|
|
33
|
+
from orchestrator.services.settings_env_variables import get_all_exposed_settings
|
|
29
34
|
from orchestrator.settings import ExecutorType, app_settings
|
|
35
|
+
from orchestrator.utils.expose_settings import SettingsExposedSchema
|
|
30
36
|
from orchestrator.utils.json import json_dumps
|
|
31
37
|
from orchestrator.utils.redis import delete_keys_matching_pattern
|
|
32
38
|
from orchestrator.utils.redis_client import create_redis_asyncio_client
|
|
@@ -169,3 +175,8 @@ def generate_engine_status_response(
|
|
|
169
175
|
result = EngineSettingsSchema.model_validate(engine_settings)
|
|
170
176
|
result.global_status = generate_engine_global_status(engine_settings)
|
|
171
177
|
return result
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
@router.get("/overview", response_model=list[SettingsExposedSchema])
|
|
181
|
+
def get_exposed_settings() -> list[SettingsExposedSchema]:
|
|
182
|
+
return get_all_exposed_settings()
|
|
@@ -35,14 +35,20 @@ def has_table_column(table_name: str, column_name: str, conn: sa.engine.Connecti
|
|
|
35
35
|
:param conn: SQLAlchemy database Connection
|
|
36
36
|
:return: True if the column exists, False otherwise
|
|
37
37
|
"""
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
38
|
+
result = conn.execute(
|
|
39
|
+
sa.text(
|
|
40
|
+
"""
|
|
41
|
+
SELECT column_name
|
|
42
|
+
FROM information_schema.columns
|
|
43
|
+
WHERE table_name = :table_name and column_name = :column_name
|
|
44
|
+
"""
|
|
45
|
+
),
|
|
46
|
+
{
|
|
47
|
+
"table_name": table_name,
|
|
48
|
+
"column_name": column_name,
|
|
49
|
+
},
|
|
50
|
+
)
|
|
51
|
+
return result.first() is not None
|
|
46
52
|
|
|
47
53
|
|
|
48
54
|
def get_resource_type_id_by_name(conn: sa.engine.Connection, name: str) -> UUID:
|