orchestrator-core 4.1.0rc2__tar.gz → 4.2.0rc1__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.2.0rc1/PKG-INFO +167 -0
- orchestrator_core-4.2.0rc1/README.md +96 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/__init__.py +1 -1
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/processes.py +4 -1
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/subscriptions.py +25 -2
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/create_product.j2 +1 -2
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/models.py +6 -3
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/process.py +21 -2
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product.py +8 -9
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/workflow.py +9 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/types.py +7 -1
- orchestrator_core-4.2.0rc1/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +65 -0
- orchestrator_core-4.2.0rc1/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +30 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/process.py +5 -1
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/processes.py +11 -2
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/enrich_process.py +4 -2
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflow.py +7 -2
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/modify_note.py +1 -1
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/steps.py +14 -8
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/utils.py +3 -3
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/pyproject.toml +91 -92
- orchestrator_core-4.1.0rc2/.bumpversion.cfg +0 -12
- orchestrator_core-4.1.0rc2/.coveragerc +0 -2
- orchestrator_core-4.1.0rc2/.github/ISSUE_TEMPLATE/bug-report.yml +0 -52
- orchestrator_core-4.1.0rc2/.github/ISSUE_TEMPLATE/feature-request.yml +0 -32
- orchestrator_core-4.1.0rc2/.github/dependabot.yml +0 -11
- orchestrator_core-4.1.0rc2/.github/workflows/README.md +0 -65
- orchestrator_core-4.1.0rc2/.github/workflows/build-push-container.yml +0 -58
- orchestrator_core-4.1.0rc2/.github/workflows/changelog.yml +0 -13
- orchestrator_core-4.1.0rc2/.github/workflows/codeql-analysis.yml +0 -68
- orchestrator_core-4.1.0rc2/.github/workflows/gh-pages.yml +0 -17
- orchestrator_core-4.1.0rc2/.github/workflows/issues.yml +0 -13
- orchestrator_core-4.1.0rc2/.github/workflows/publish-package.yml +0 -25
- orchestrator_core-4.1.0rc2/.github/workflows/run-codspeed-tests.yml +0 -71
- orchestrator_core-4.1.0rc2/.github/workflows/run-linting-tests.yml +0 -36
- orchestrator_core-4.1.0rc2/.github/workflows/run-unit-tests.yml +0 -68
- orchestrator_core-4.1.0rc2/.github/workflows/scheduled-build.yml +0 -42
- orchestrator_core-4.1.0rc2/.gitignore +0 -135
- orchestrator_core-4.1.0rc2/.pre-commit-config.yaml +0 -86
- orchestrator_core-4.1.0rc2/.stignore +0 -101
- orchestrator_core-4.1.0rc2/CHANGELOG.md +0 -481
- orchestrator_core-4.1.0rc2/Dockerfile +0 -24
- orchestrator_core-4.1.0rc2/NOTICE +0 -7
- orchestrator_core-4.1.0rc2/PKG-INFO +0 -118
- orchestrator_core-4.1.0rc2/README.md +0 -200
- orchestrator_core-4.1.0rc2/codecov.yml +0 -8
- orchestrator_core-4.1.0rc2/docs/architecture/application/domainmodels.md +0 -236
- orchestrator_core-4.1.0rc2/docs/architecture/application/forms-frontend.md +0 -231
- orchestrator_core-4.1.0rc2/docs/architecture/application/tasks.md +0 -169
- orchestrator_core-4.1.0rc2/docs/architecture/application/workflow.md +0 -295
- orchestrator_core-4.1.0rc2/docs/architecture/framework.md +0 -28
- orchestrator_core-4.1.0rc2/docs/architecture/img/base-orchestrator-setup.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/img/custom-orchestrator-setup.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/orchestration/img/Custom-orchestrator-ui-using-override.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/orchestration/img/Standard-orchestrator-ui.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/orchestration/orchestrator-ui.md +0 -265
- orchestrator_core-4.1.0rc2/docs/architecture/orchestration/philosophy.md +0 -16
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/backfilling.md +0 -77
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/context.md +0 -11
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/imports.md +0 -90
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/introduction.md +0 -13
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/ip_static.md +0 -27
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/ip_static.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_point_to_point.md +0 -21
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_point_to_point.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_vpn.md +0 -15
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/l2_vpn.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/modelling.md +0 -22
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/node.md +0 -20
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/node.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/port.md +0 -20
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/port.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/product_block_graph.md +0 -26
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/product_block_graph.png +0 -0
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/standards.md +0 -16
- orchestrator_core-4.1.0rc2/docs/architecture/product_modelling/terminology.md +0 -17
- orchestrator_core-4.1.0rc2/docs/architecture/tldr.md +0 -40
- orchestrator_core-4.1.0rc2/docs/contributing/development.md +0 -109
- orchestrator_core-4.1.0rc2/docs/contributing/guidelines.md +0 -41
- orchestrator_core-4.1.0rc2/docs/contributing/testing.md +0 -278
- orchestrator_core-4.1.0rc2/docs/css/custom.css +0 -24
- orchestrator_core-4.1.0rc2/docs/css/style.css +0 -27
- orchestrator_core-4.1.0rc2/docs/css/termynal.css +0 -108
- orchestrator_core-4.1.0rc2/docs/getting-started/base.md +0 -99
- orchestrator_core-4.1.0rc2/docs/getting-started/docker.md +0 -23
- orchestrator_core-4.1.0rc2/docs/getting-started/orchestration-ui.md +0 -59
- orchestrator_core-4.1.0rc2/docs/getting-started/prepare-source-folder.md +0 -110
- orchestrator_core-4.1.0rc2/docs/getting-started/versions.md +0 -12
- orchestrator_core-4.1.0rc2/docs/img/WFO-Emblem-White.png +0 -0
- orchestrator_core-4.1.0rc2/docs/img/favicon.ico +0 -0
- orchestrator_core-4.1.0rc2/docs/index.md +0 -82
- orchestrator_core-4.1.0rc2/docs/js/custom.js +0 -105
- orchestrator_core-4.1.0rc2/docs/js/termynal.js +0 -264
- orchestrator_core-4.1.0rc2/docs/migration-guide/2.0.md +0 -331
- orchestrator_core-4.1.0rc2/docs/migration-guide/3.0.md +0 -14
- orchestrator_core-4.1.0rc2/docs/migration-guide/4.0.md +0 -73
- orchestrator_core-4.1.0rc2/docs/reference-docs/api.md +0 -6
- orchestrator_core-4.1.0rc2/docs/reference-docs/app/app.md +0 -26
- orchestrator_core-4.1.0rc2/docs/reference-docs/app/scaling.md +0 -250
- orchestrator_core-4.1.0rc2/docs/reference-docs/app/settings_overview.md +0 -89
- orchestrator_core-4.1.0rc2/docs/reference-docs/auth-backend-and-frontend.md +0 -595
- orchestrator_core-4.1.0rc2/docs/reference-docs/cli.md +0 -761
- orchestrator_core-4.1.0rc2/docs/reference-docs/database.md +0 -36
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/generator.md +0 -3
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/instantiating.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/model_attributes.md +0 -57
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/overview.md +0 -4
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/product_blocks.md +0 -44
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/product_types.md +0 -56
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/properties.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/pydantic_hooks.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/type_casting.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/union_types.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/domain_models/validation.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/forms.md +0 -438
- orchestrator_core-4.1.0rc2/docs/reference-docs/graphql.md +0 -686
- orchestrator_core-4.1.0rc2/docs/reference-docs/metrics.md +0 -45
- orchestrator_core-4.1.0rc2/docs/reference-docs/python.md +0 -27
- orchestrator_core-4.1.0rc2/docs/reference-docs/search.md +0 -264
- orchestrator_core-4.1.0rc2/docs/reference-docs/search_overview.png +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/serialization.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/tasks.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/tests.md +0 -0
- orchestrator_core-4.1.0rc2/docs/reference-docs/tldr.md +0 -3
- orchestrator_core-4.1.0rc2/docs/reference-docs/websockets.md +0 -107
- orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/callbacks.md +0 -178
- orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/workflow-lifecycles.md +0 -9
- orchestrator_core-4.1.0rc2/docs/reference-docs/workflows/workflow-steps.md +0 -28
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/bootstrap.md +0 -168
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/create-your-own.md +0 -9
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/docker-installation.md +0 -89
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/domain-models.md +0 -10
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/execute-workflows.md +0 -46
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/generator.md +0 -169
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/l2_point_to_point.png +0 -0
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-create.md +0 -2
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-modify.md +0 -2
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-terminate.md +0 -2
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/node-validate.md +0 -2
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/overview.md +0 -86
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/scenario.md +0 -19
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/workflow-basics.md +0 -3
- orchestrator_core-4.1.0rc2/docs/workshops/advanced/workflow-introduction.md +0 -36
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/create-user-group.md +0 -132
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/create-user.md +0 -137
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/database-migration.md +0 -192
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/debian.md +0 -145
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/docker.md +0 -78
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/domain-models.md +0 -187
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/explore.md +0 -73
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/input-forms.md +0 -111
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/macos.md +0 -146
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/modify-user-group.md +0 -79
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/modify-user.md +0 -61
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/register-workflows.md +0 -113
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/start-applications.md +0 -40
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/terminate-user-group.md +0 -79
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/terminate-user.md +0 -44
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/workflow-introduction.md +0 -78
- orchestrator_core-4.1.0rc2/docs/workshops/beginner/workshop-overview.md +0 -92
- orchestrator_core-4.1.0rc2/docs/workshops/images/Software-topology.drawio.png +0 -0
- orchestrator_core-4.1.0rc2/docs/workshops/images/clab_topology.png +0 -0
- orchestrator_core-4.1.0rc2/docs/workshops/images/metadata_products.png +0 -0
- orchestrator_core-4.1.0rc2/docs/workshops/images/netbox_devices_active.png +0 -0
- orchestrator_core-4.1.0rc2/docs/workshops/images/subscriptions.png +0 -0
- orchestrator_core-4.1.0rc2/docs/workshops/images/topology.drawio.png +0 -0
- orchestrator_core-4.1.0rc2/includes/abbreviations.md +0 -6
- orchestrator_core-4.1.0rc2/mkdocs.yml +0 -248
- orchestrator_core-4.1.0rc2/nitpick-style.toml +0 -2
- orchestrator_core-4.1.0rc2/setup.cfg +0 -69
- orchestrator_core-4.1.0rc2/setup.py +0 -20
- orchestrator_core-4.1.0rc2/test/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/conftest.py +0 -110
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/devtools/populator/test_product_populator.py +0 -61
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/main.py +0 -40
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/product_blocks/test_product_blocks.py +0 -46
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/products/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/products/test_product.py +0 -33
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/workflows/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/acceptance_tests/fixtures/test_orchestrator/workflows/create_test_product.py +0 -84
- orchestrator_core-4.1.0rc2/test/acceptance_tests/test_test_product.py +0 -23
- orchestrator_core-4.1.0rc2/test/unit_tests/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/api/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_health.py +0 -30
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_helpers.py +0 -85
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_models.py +0 -45
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_processes.py +0 -756
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_processes_ws.py +0 -334
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_product_blocks.py +0 -58
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_products.py +0 -202
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_resource_types.py +0 -56
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_settings.py +0 -98
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_subscription_customer_descriptions.py +0 -145
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_subscriptions.py +0 -846
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_workflows.py +0 -57
- orchestrator_core-4.1.0rc2/test/unit_tests/api/test_ws.py +0 -103
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/conftest.py +0 -33
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/alembic.ini +0 -45
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/main.py +0 -7
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/env.py +0 -89
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/helpers.py +0 -3
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/script.py.mako +0 -23
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_59e1199aff7f_create_data_head.py +0 -21
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_85be1c80731c_add_example2.py +0 -93
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-02-20_ea9e6c9de75c_add_example1.py +0 -135
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/migrations/versions/schema/2024-06-07_380a5b0c928c_add_example4.py +0 -105
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/__init__.py +0 -26
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example1.py +0 -61
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example2.py +0 -30
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example4.py +0 -26
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_blocks/example4sub.py +0 -21
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example1.py +0 -28
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example2.py +0 -16
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/products/product_types/example4.py +0 -16
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example1.py +0 -53
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example2.py +0 -53
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/domain/product_types/test_example4.py +0 -53
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_create_example1.py +0 -83
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_modify_example1.py +0 -70
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_terminate_example1.py +0 -43
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example1/test_validate_example1.py +0 -35
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_create_example2.py +0 -32
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_modify_example2.py +0 -33
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_terminate_example2.py +0 -26
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example2/test_validate_example2.py +0 -16
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_create_example4.py +0 -32
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_modify_example4.py +0 -33
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_terminate_example4.py +0 -26
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/test/unit_tests/workflows/example4/test_validate_example4.py +0 -16
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/translations/en-GB.json +0 -16
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/__init__.py +0 -14
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/create_example1.py +0 -110
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/modify_example1.py +0 -98
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/shared/forms.py +0 -15
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/terminate_example1.py +0 -46
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example1/validate_example1.py +0 -29
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/create_example2.py +0 -79
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/modify_example2.py +0 -73
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/shared/forms.py +0 -1
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example2/terminate_example2.py +0 -39
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/create_example4.py +0 -78
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/modify_example4.py +0 -71
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/shared/forms.py +0 -1
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/example4/terminate_example4.py +0 -39
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate/workflows/shared.py +0 -36
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/generate.sh +0 -25
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/invalid_product_config1.yaml +0 -20
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/invalid_product_config2.yaml +0 -24
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config1.yaml +0 -87
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config2.yaml +0 -29
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config3.yaml +0 -26
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/data/product_config4.yaml +0 -32
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/generator/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/generator/test_enums.py +0 -27
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/helpers.py +0 -19
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_cli_generate.py +0 -68
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_config_validation.py +0 -20
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_generate_code.py +0 -152
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_migrate_domain_models_with_instances.py +0 -764
- orchestrator_core-4.1.0rc2/test/unit_tests/cli/test_migrate_domain_models_without_instances.py +0 -728
- orchestrator_core-4.1.0rc2/test/unit_tests/config.py +0 -12
- orchestrator_core-4.1.0rc2/test/unit_tests/conftest.py +0 -805
- orchestrator_core-4.1.0rc2/test/unit_tests/db/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/db/test_listeners.py +0 -23
- orchestrator_core-4.1.0rc2/test/unit_tests/db/test_migration_does_column_exist.py +0 -10
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base.py +0 -1301
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_multiple.py +0 -226
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_performance.py +0 -160
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_serializable_property.py +0 -170
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_with_list_union.py +0 -189
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_base_with_union.py +0 -108
- orchestrator_core-4.1.0rc2/test/unit_tests/domain/test_lifecycle.py +0 -49
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/__init__.py +0 -88
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/processes.py +0 -180
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_list_nested.py +0 -67
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_one.py +0 -84
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_one_nested.py +0 -55
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_with_list_union.py +0 -64
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_block_with_union.py +0 -59
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_sub_block_one.py +0 -35
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_blocks/product_sub_block_two.py +0 -32
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_nested.py +0 -64
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_union.py +0 -52
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_list_union_overlap.py +0 -101
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_one.py +0 -95
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_one_nested.py +0 -65
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_list_union.py +0 -82
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_one.py +0 -57
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_two.py +0 -57
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_sub_union.py +0 -45
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/product_type_union.py +0 -41
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/product_types/subscription_relations.py +0 -300
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/products/resource_types.py +0 -28
- orchestrator_core-4.1.0rc2/test/unit_tests/fixtures/workflows.py +0 -22
- orchestrator_core-4.1.0rc2/test/unit_tests/forms/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_customer_contact_list.py +0 -140
- orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_customer_id.py +0 -17
- orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_display_subscription.py +0 -77
- orchestrator_core-4.1.0rc2/test/unit_tests/forms/test_generic_validators.py +0 -121
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/conftest.py +0 -55
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/extensions/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/extensions/test_stats.py +0 -30
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/helpers.py +0 -17
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/test_customer_description.py +0 -296
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/mutations/test_start_process.py +0 -86
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_customer.py +0 -69
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_process.py +0 -42
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_processes.py +0 -679
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_product.py +0 -350
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_product_blocks.py +0 -317
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_resource_types.py +0 -174
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_settings.py +0 -166
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_sort_and_filter_fields.py +0 -74
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscription.py +0 -105
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscription_relations.py +0 -617
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_subscriptions.py +0 -1581
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_version.py +0 -21
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/test_workflows.py +0 -234
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/fixtures.py +0 -157
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_autoregistration.py +0 -12
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_get_query_loaders.py +0 -55
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_get_selected_paths.py +0 -49
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_is_query_detailed.py +0 -207
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_is_querying_page_data.py +0 -95
- orchestrator_core-4.1.0rc2/test/unit_tests/graphql/utils/test_override_class.py +0 -290
- orchestrator_core-4.1.0rc2/test/unit_tests/helpers.py +0 -32
- orchestrator_core-4.1.0rc2/test/unit_tests/metrics/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/metrics/conftest.py +0 -27
- orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_engine_metrics.py +0 -18
- orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_process_metrics.py +0 -27
- orchestrator_core-4.1.0rc2/test/unit_tests/metrics/test_subscription_metrics.py +0 -60
- orchestrator_core-4.1.0rc2/test/unit_tests/migrations/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/migrations/test_cascade_constraint.py +0 -55
- orchestrator_core-4.1.0rc2/test/unit_tests/schedules/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/schedules/test_scheduling.py +0 -26
- orchestrator_core-4.1.0rc2/test/unit_tests/services/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_expose_settings.py +0 -35
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_input_state.py +0 -62
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_processes.py +0 -927
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_products.py +0 -39
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_subscription_relations.py +0 -190
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_subscriptions.py +0 -160
- orchestrator_core-4.1.0rc2/test/unit_tests/services/test_translations.py +0 -61
- orchestrator_core-4.1.0rc2/test/unit_tests/test_db.py +0 -183
- orchestrator_core-4.1.0rc2/test/unit_tests/test_types.py +0 -12
- orchestrator_core-4.1.0rc2/test/unit_tests/test_workflow.py +0 -630
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/get_subscription_dict.py +0 -11
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_datetime.py +0 -6
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_errors.py +0 -54
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_functional.py +0 -127
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_get_updated_properties.py +0 -127
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_json.py +0 -119
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_search_query.py +0 -170
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_state.py +0 -490
- orchestrator_core-4.1.0rc2/test/unit_tests/utils/test_strings.py +0 -6
- orchestrator_core-4.1.0rc2/test/unit_tests/websocket/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/websocket/test_broadcast.py +0 -93
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/__init__.py +0 -384
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/conftest.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/shared/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/shared/test_validate_subscriptions.py +0 -58
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/__init__.py +0 -0
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_clean_up_task_log.py +0 -75
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_resume_workflows.py +0 -79
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_validate_product_type.py +0 -39
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/tasks/test_validate_products.py +0 -9
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_async_workflow.py +0 -331
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_config_db_code.py +0 -77
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_generic_workflow_steps.py +0 -103
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_lifecycle_status_manager.py +0 -64
- orchestrator_core-4.1.0rc2/test/unit_tests/workflows/test_modify_note.py +0 -26
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/LICENSE +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/api.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/health.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/products.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/user.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/error_handling.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/api/models.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/app.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/database.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generate.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/README +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/enums.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/migration.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/product.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/product_block.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/translations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/unittest.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/validations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/generator/workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/enums.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/macros.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/product.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/input_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/helpers/print_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/main.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_domain_models.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_tasks.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migrate_workflows.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/migration_helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/cli/scheduler.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/config/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/config/assignee.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/database.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/filters.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/process.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/product.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/product_block.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/resource_type.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/search_filters/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/filters/workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/listeners.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/loaders.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/queries/subscription_instance.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/range/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/range/range.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/process.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/product.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/product_block.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/resource_type.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/sorting.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/db/sorting/workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/populator.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/migrate_20.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/migrate_30.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/devtools/scripts/shared.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/distlock_manager.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/base.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/context_cache.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/customer_description.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/lifecycle.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/domain/subscription_instance_transform.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/exception_handlers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/customer_contact_list.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/customer_id.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/display_subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/network_type_validators.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/forms/validators/product_id.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/autoregistration.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/model_cache.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/extensions/stats.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/loaders/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/loaders/subscriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/mutations/customer_description.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/mutations/start_process.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/pagination.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/customer.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/process.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/product.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/product_block.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/resource_type.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/version.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/resolvers/workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schema.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/customer.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/customer_description.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/errors.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product_block.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/resource_type.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/version.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/override_class.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/log_config.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/engine.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/init.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/processes.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/metrics/subscriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/README +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/alembic.ini +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/env.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/script.py.mako +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/env.py.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/py.typed +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/resume_workflows.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/scheduling.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/task_vacuum.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/validate_products.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schedules/validate_subscriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/base.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/engine_settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/problem_detail.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/product.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/product_block.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/resource_type.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/subscription.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/subscription_descriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/schemas/workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/security.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/celery.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/fixed_inputs.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/input_state.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/process_broadcast_thread.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/products.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/resource_types.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/settings_env_variables.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/subscription_relations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/subscriptions.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/tasks.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/translations.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/services/workflows.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/targets.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/types.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/auth.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/crypt.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/datetime.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/deprecation_logger.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/docs.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/errors.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/expose_settings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/fixed_inputs.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/functional.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/get_updated_properties.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/helpers.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/json.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/redis.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/redis_client.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/search_query.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/state.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/strings.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/utils/validate_data_version.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/version.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/websocket/websocket_manager.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/removed_workflow.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/tasks/validate_products.py +0 -0
- {orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/workflows/translations/en-GB.json +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: orchestrator-core
|
|
3
|
+
Version: 4.2.0rc1
|
|
4
|
+
Summary: This is the orchestrator workflow engine.
|
|
5
|
+
Author-email: SURF <automation-beheer@surf.nl>
|
|
6
|
+
Requires-Python: >=3.11,<3.14
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-Expression: Apache-2.0
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Environment :: Web Environment
|
|
11
|
+
Classifier: Framework :: AsyncIO
|
|
12
|
+
Classifier: Framework :: FastAPI
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Information Technology
|
|
15
|
+
Classifier: Intended Audience :: System Administrators
|
|
16
|
+
Classifier: Intended Audience :: Telecommunications Industry
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python
|
|
24
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
|
25
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
26
|
+
Classifier: Topic :: Internet
|
|
27
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
28
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
30
|
+
Classifier: Topic :: Software Development
|
|
31
|
+
Classifier: Typing :: Typed
|
|
32
|
+
License-File: LICENSE
|
|
33
|
+
Requires-Dist: alembic==1.16.1
|
|
34
|
+
Requires-Dist: anyio>=3.7.0
|
|
35
|
+
Requires-Dist: click==8.*
|
|
36
|
+
Requires-Dist: deepmerge==2.0
|
|
37
|
+
Requires-Dist: deprecated>=1.2.18
|
|
38
|
+
Requires-Dist: fastapi~=0.115.2
|
|
39
|
+
Requires-Dist: fastapi-etag==0.4.0
|
|
40
|
+
Requires-Dist: itsdangerous>=2.2.0
|
|
41
|
+
Requires-Dist: jinja2==3.1.6
|
|
42
|
+
Requires-Dist: more-itertools~=10.7.0
|
|
43
|
+
Requires-Dist: nwa-stdlib~=1.9.0
|
|
44
|
+
Requires-Dist: oauth2-lib~=2.4.0
|
|
45
|
+
Requires-Dist: orjson==3.10.18
|
|
46
|
+
Requires-Dist: prometheus-client==0.22.1
|
|
47
|
+
Requires-Dist: psycopg2-binary==2.9.10
|
|
48
|
+
Requires-Dist: pydantic-forms>=1.4.0,<=2.1.0
|
|
49
|
+
Requires-Dist: pydantic-settings~=2.9.1
|
|
50
|
+
Requires-Dist: pydantic[email]~=2.8.2
|
|
51
|
+
Requires-Dist: python-dateutil==2.8.2
|
|
52
|
+
Requires-Dist: python-rapidjson>=1.18,<1.21
|
|
53
|
+
Requires-Dist: pytz==2025.2
|
|
54
|
+
Requires-Dist: redis==5.1.1
|
|
55
|
+
Requires-Dist: schedule==1.1.0
|
|
56
|
+
Requires-Dist: semver==3.0.4
|
|
57
|
+
Requires-Dist: sentry-sdk[fastapi]~=2.29.1
|
|
58
|
+
Requires-Dist: sqlalchemy==2.0.41
|
|
59
|
+
Requires-Dist: sqlalchemy-utils==0.41.2
|
|
60
|
+
Requires-Dist: strawberry-graphql>=0.246.2
|
|
61
|
+
Requires-Dist: structlog>=25.4.0
|
|
62
|
+
Requires-Dist: tabulate==0.9.0
|
|
63
|
+
Requires-Dist: typer==0.15.4
|
|
64
|
+
Requires-Dist: uvicorn[standard]~=0.34.0
|
|
65
|
+
Requires-Dist: celery~=5.5.1 ; extra == "celery"
|
|
66
|
+
Project-URL: Documentation, https://workfloworchestrator.org/orchestrator-core
|
|
67
|
+
Project-URL: Homepage, https://workfloworchestrator.org/orchestrator-core
|
|
68
|
+
Project-URL: Source, https://github.com/workfloworchestrator/orchestrator-core
|
|
69
|
+
Provides-Extra: celery
|
|
70
|
+
|
|
71
|
+
# Orchestrator-Core
|
|
72
|
+
|
|
73
|
+
[](https://pepy.tech/project/orchestrator-core)
|
|
74
|
+
[](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
|
|
75
|
+
[](https://pypi.org/project/orchestrator-core)
|
|
76
|
+
[](https://pypi.org/project/orchestrator-core)
|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
<p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
|
|
80
|
+
|
|
81
|
+
## Documentation
|
|
82
|
+
|
|
83
|
+
The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).
|
|
84
|
+
|
|
85
|
+
## Installation (quick start)
|
|
86
|
+
|
|
87
|
+
Simplified steps to install and use the orchestrator-core.
|
|
88
|
+
For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.
|
|
89
|
+
|
|
90
|
+
### Step 1 - Install the package
|
|
91
|
+
|
|
92
|
+
Create a virtualenv and install the orchestrator-core.
|
|
93
|
+
|
|
94
|
+
```shell
|
|
95
|
+
python -m venv .venv
|
|
96
|
+
source .venv/bin/activate
|
|
97
|
+
pip install orchestrator-core
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Step 2 - Setup the database
|
|
101
|
+
|
|
102
|
+
Create a postgres database:
|
|
103
|
+
|
|
104
|
+
```shell
|
|
105
|
+
createuser -sP nwa
|
|
106
|
+
createdb orchestrator-core -O nwa # set password to 'nwa'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Configure the database URI in your local environment:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Step 3 - Create main.py
|
|
116
|
+
|
|
117
|
+
Create a `main.py` file.
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
from orchestrator import OrchestratorCore
|
|
121
|
+
from orchestrator.cli.main import app as core_cli
|
|
122
|
+
from orchestrator.settings import AppSettings
|
|
123
|
+
|
|
124
|
+
app = OrchestratorCore(base_settings=AppSettings())
|
|
125
|
+
|
|
126
|
+
if __name__ == "__main__":
|
|
127
|
+
core_cli()
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Step 4 - Run the database migrations
|
|
131
|
+
|
|
132
|
+
Initialize the migration environment and database tables.
|
|
133
|
+
|
|
134
|
+
```shell
|
|
135
|
+
python main.py db init
|
|
136
|
+
python main.py db upgrade heads
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Step 5 - Run the app
|
|
140
|
+
|
|
141
|
+
```shell
|
|
142
|
+
export OAUTH2_ACTIVE=False
|
|
143
|
+
uvicorn --reload --host 127.0.0.1 --port 8080 main:app
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
|
|
147
|
+
|
|
148
|
+
## Contributing
|
|
149
|
+
|
|
150
|
+
We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage dependencies.
|
|
151
|
+
|
|
152
|
+
To get started, follow these steps:
|
|
153
|
+
|
|
154
|
+
```shell
|
|
155
|
+
# in your postgres database
|
|
156
|
+
createdb orchestrator-core-test -O nwa # set password to 'nwa'
|
|
157
|
+
|
|
158
|
+
# on your local machine
|
|
159
|
+
git clone https://github.com/workfloworchestrator/orchestrator-core
|
|
160
|
+
cd orchestrator-core
|
|
161
|
+
export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core-test
|
|
162
|
+
uv sync --all-extras --all-groups
|
|
163
|
+
uv run pytest
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).
|
|
167
|
+
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Orchestrator-Core
|
|
2
|
+
|
|
3
|
+
[](https://pepy.tech/project/orchestrator-core)
|
|
4
|
+
[](https://codecov.io/gh/workfloworchestrator/orchestrator-core)
|
|
5
|
+
[](https://pypi.org/project/orchestrator-core)
|
|
6
|
+
[](https://pypi.org/project/orchestrator-core)
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
<p style="text-align: center"><em>Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, built on top of FastAPI and Pydantic</em></p>
|
|
10
|
+
|
|
11
|
+
## Documentation
|
|
12
|
+
|
|
13
|
+
The documentation can be found at [workfloworchestrator.org](https://workfloworchestrator.org/orchestrator-core/).
|
|
14
|
+
|
|
15
|
+
## Installation (quick start)
|
|
16
|
+
|
|
17
|
+
Simplified steps to install and use the orchestrator-core.
|
|
18
|
+
For more details, read the [Getting started](https://workfloworchestrator.org/orchestrator-core/getting-started/base/) documentation.
|
|
19
|
+
|
|
20
|
+
### Step 1 - Install the package
|
|
21
|
+
|
|
22
|
+
Create a virtualenv and install the orchestrator-core.
|
|
23
|
+
|
|
24
|
+
```shell
|
|
25
|
+
python -m venv .venv
|
|
26
|
+
source .venv/bin/activate
|
|
27
|
+
pip install orchestrator-core
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Step 2 - Setup the database
|
|
31
|
+
|
|
32
|
+
Create a postgres database:
|
|
33
|
+
|
|
34
|
+
```shell
|
|
35
|
+
createuser -sP nwa
|
|
36
|
+
createdb orchestrator-core -O nwa # set password to 'nwa'
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Configure the database URI in your local environment:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Step 3 - Create main.py
|
|
46
|
+
|
|
47
|
+
Create a `main.py` file.
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from orchestrator import OrchestratorCore
|
|
51
|
+
from orchestrator.cli.main import app as core_cli
|
|
52
|
+
from orchestrator.settings import AppSettings
|
|
53
|
+
|
|
54
|
+
app = OrchestratorCore(base_settings=AppSettings())
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
core_cli()
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Step 4 - Run the database migrations
|
|
61
|
+
|
|
62
|
+
Initialize the migration environment and database tables.
|
|
63
|
+
|
|
64
|
+
```shell
|
|
65
|
+
python main.py db init
|
|
66
|
+
python main.py db upgrade heads
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Step 5 - Run the app
|
|
70
|
+
|
|
71
|
+
```shell
|
|
72
|
+
export OAUTH2_ACTIVE=False
|
|
73
|
+
uvicorn --reload --host 127.0.0.1 --port 8080 main:app
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
|
|
77
|
+
|
|
78
|
+
## Contributing
|
|
79
|
+
|
|
80
|
+
We use [uv](https://docs.astral.sh/uv/getting-started/installation/) to manage dependencies.
|
|
81
|
+
|
|
82
|
+
To get started, follow these steps:
|
|
83
|
+
|
|
84
|
+
```shell
|
|
85
|
+
# in your postgres database
|
|
86
|
+
createdb orchestrator-core-test -O nwa # set password to 'nwa'
|
|
87
|
+
|
|
88
|
+
# on your local machine
|
|
89
|
+
git clone https://github.com/workfloworchestrator/orchestrator-core
|
|
90
|
+
cd orchestrator-core
|
|
91
|
+
export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core-test
|
|
92
|
+
uv sync --all-extras --all-groups
|
|
93
|
+
uv run pytest
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
For more details please read the [development docs](https://workfloworchestrator.org/orchestrator-core/contributing/development/).
|
|
@@ -158,6 +158,9 @@ def delete(process_id: UUID) -> None:
|
|
|
158
158
|
if not process:
|
|
159
159
|
raise_status(HTTPStatus.NOT_FOUND)
|
|
160
160
|
|
|
161
|
+
if not process.is_task:
|
|
162
|
+
raise_status(HTTPStatus.BAD_REQUEST)
|
|
163
|
+
|
|
161
164
|
db.session.delete(db.session.get(ProcessTable, process_id))
|
|
162
165
|
db.session.commit()
|
|
163
166
|
|
|
@@ -270,7 +273,7 @@ def update_progress_on_awaiting_process_endpoint(
|
|
|
270
273
|
@router.put(
|
|
271
274
|
"/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
|
|
272
275
|
)
|
|
273
|
-
async def
|
|
276
|
+
async def resume_all_processes_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
|
|
274
277
|
"""Retry all task processes in status Failed, Waiting, API Unavailable or Inconsistent Data.
|
|
275
278
|
|
|
276
279
|
The retry is started in the background, returning status 200 and number of processes in message.
|
|
@@ -47,10 +47,12 @@ from orchestrator.services.subscriptions import (
|
|
|
47
47
|
subscription_workflows,
|
|
48
48
|
)
|
|
49
49
|
from orchestrator.settings import app_settings
|
|
50
|
+
from orchestrator.targets import Target
|
|
50
51
|
from orchestrator.types import SubscriptionLifecycle
|
|
51
52
|
from orchestrator.utils.deprecation_logger import deprecated_endpoint
|
|
52
53
|
from orchestrator.utils.get_subscription_dict import get_subscription_dict
|
|
53
54
|
from orchestrator.websocket import sync_invalidate_subscription_cache
|
|
55
|
+
from orchestrator.workflows import get_workflow
|
|
54
56
|
|
|
55
57
|
router = APIRouter()
|
|
56
58
|
|
|
@@ -100,6 +102,25 @@ def _filter_statuses(filter_statuses: str | None = None) -> list[str]:
|
|
|
100
102
|
return statuses
|
|
101
103
|
|
|
102
104
|
|
|
105
|
+
def _authorized_subscription_workflows(
|
|
106
|
+
subscription: SubscriptionTable, current_user: OIDCUserModel | None
|
|
107
|
+
) -> dict[str, list[dict[str, list[Any] | str]]]:
|
|
108
|
+
subscription_workflows_dict = subscription_workflows(subscription)
|
|
109
|
+
|
|
110
|
+
for workflow_target in Target.values():
|
|
111
|
+
for workflow_dict in subscription_workflows_dict[workflow_target.lower()]:
|
|
112
|
+
workflow = get_workflow(workflow_dict["name"])
|
|
113
|
+
if not workflow:
|
|
114
|
+
continue
|
|
115
|
+
if (
|
|
116
|
+
not workflow.authorize_callback(current_user) # The current user isn't allowed to run this workflow
|
|
117
|
+
and "reason" not in workflow_dict # and there isn't already a reason why this workflow cannot run
|
|
118
|
+
):
|
|
119
|
+
workflow_dict["reason"] = "subscription.insufficient_workflow_permissions"
|
|
120
|
+
|
|
121
|
+
return subscription_workflows_dict
|
|
122
|
+
|
|
123
|
+
|
|
103
124
|
@router.get(
|
|
104
125
|
"/domain-model/{subscription_id}",
|
|
105
126
|
response_model=SubscriptionDomainModelSchema | None,
|
|
@@ -169,7 +190,9 @@ def subscriptions_search(
|
|
|
169
190
|
description="This endpoint is deprecated and will be removed in a future release. Please use the GraphQL query",
|
|
170
191
|
dependencies=[Depends(deprecated_endpoint)],
|
|
171
192
|
)
|
|
172
|
-
def subscription_workflows_by_id(
|
|
193
|
+
def subscription_workflows_by_id(
|
|
194
|
+
subscription_id: UUID, current_user: OIDCUserModel | None = Depends(authenticate)
|
|
195
|
+
) -> dict[str, list[dict[str, list[Any] | str]]]:
|
|
173
196
|
subscription = db.session.get(
|
|
174
197
|
SubscriptionTable,
|
|
175
198
|
subscription_id,
|
|
@@ -181,7 +204,7 @@ def subscription_workflows_by_id(subscription_id: UUID) -> dict[str, list[dict[s
|
|
|
181
204
|
if not subscription:
|
|
182
205
|
raise_status(HTTPStatus.NOT_FOUND)
|
|
183
206
|
|
|
184
|
-
return
|
|
207
|
+
return _authorized_subscription_workflows(subscription, current_user)
|
|
185
208
|
|
|
186
209
|
|
|
187
210
|
@router.put("/{subscription_id}/set_in_sync", response_model=None, status_code=HTTPStatus.OK)
|
|
@@ -11,7 +11,6 @@ from pydantic_forms.types import FormGenerator, State, UUIDstr
|
|
|
11
11
|
|
|
12
12
|
from orchestrator.forms import FormPage
|
|
13
13
|
from orchestrator.forms.validators import Divider, Label, CustomerId, MigrationSummary
|
|
14
|
-
from orchestrator.targets import Target
|
|
15
14
|
from orchestrator.types import SubscriptionLifecycle
|
|
16
15
|
from orchestrator.workflow import StepList, begin, step
|
|
17
16
|
from orchestrator.workflows.steps import store_process_subscription
|
|
@@ -119,6 +118,6 @@ def create_{{ product.variable }}() -> StepList:
|
|
|
119
118
|
return (
|
|
120
119
|
begin
|
|
121
120
|
>> construct_{{ product.variable }}_model
|
|
122
|
-
>> store_process_subscription(
|
|
121
|
+
>> store_process_subscription()
|
|
123
122
|
# TODO add provision step(s)
|
|
124
123
|
)
|
|
@@ -117,7 +117,7 @@ class ProcessTable(BaseModel):
|
|
|
117
117
|
is_task = mapped_column(Boolean, nullable=False, server_default=text("false"), index=True)
|
|
118
118
|
|
|
119
119
|
steps = relationship(
|
|
120
|
-
"ProcessStepTable", cascade="delete", passive_deletes=True, order_by="asc(ProcessStepTable.
|
|
120
|
+
"ProcessStepTable", cascade="delete", passive_deletes=True, order_by="asc(ProcessStepTable.completed_at)"
|
|
121
121
|
)
|
|
122
122
|
input_states = relationship("InputStateTable", cascade="delete", order_by="desc(InputStateTable.input_time)")
|
|
123
123
|
process_subscriptions = relationship("ProcessSubscriptionTable", back_populates="process", passive_deletes=True)
|
|
@@ -141,7 +141,8 @@ class ProcessStepTable(BaseModel):
|
|
|
141
141
|
status = mapped_column(String(50), nullable=False)
|
|
142
142
|
state = mapped_column(pg.JSONB(), nullable=False)
|
|
143
143
|
created_by = mapped_column(String(255), nullable=True)
|
|
144
|
-
|
|
144
|
+
completed_at = mapped_column(UtcTimestamp, server_default=text("statement_timestamp()"), nullable=False)
|
|
145
|
+
started_at = mapped_column(UtcTimestamp, server_default=text("statement_timestamp()"), nullable=False)
|
|
145
146
|
commit_hash = mapped_column(String(40), nullable=True, default=GIT_COMMIT_HASH)
|
|
146
147
|
|
|
147
148
|
|
|
@@ -154,7 +155,9 @@ class ProcessSubscriptionTable(BaseModel):
|
|
|
154
155
|
)
|
|
155
156
|
subscription_id = mapped_column(UUIDType, ForeignKey("subscriptions.subscription_id"), nullable=False, index=True)
|
|
156
157
|
created_at = mapped_column(UtcTimestamp, server_default=text("current_timestamp()"), nullable=False)
|
|
157
|
-
|
|
158
|
+
|
|
159
|
+
# FIXME: workflow_target is already stored in the workflow table, this column should get removed in a later release.
|
|
160
|
+
workflow_target = mapped_column(String(255), nullable=True)
|
|
158
161
|
|
|
159
162
|
process = relationship("ProcessTable", back_populates="process_subscriptions")
|
|
160
163
|
subscription = relationship("SubscriptionTable", back_populates="processes")
|
{orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/process.py
RENAMED
|
@@ -6,14 +6,17 @@ from strawberry.federation.schema_directives import Key
|
|
|
6
6
|
from strawberry.scalars import JSON
|
|
7
7
|
|
|
8
8
|
from oauth2_lib.strawberry import authenticated_field
|
|
9
|
+
from orchestrator.api.api_v1.endpoints.processes import get_auth_callbacks, get_current_steps
|
|
9
10
|
from orchestrator.db import ProcessTable, ProductTable, db
|
|
10
11
|
from orchestrator.graphql.pagination import EMPTY_PAGE, Connection
|
|
11
12
|
from orchestrator.graphql.schemas.customer import CustomerType
|
|
12
13
|
from orchestrator.graphql.schemas.helpers import get_original_model
|
|
13
14
|
from orchestrator.graphql.schemas.product import ProductType
|
|
14
|
-
from orchestrator.graphql.types import GraphqlFilter, GraphqlSort, OrchestratorInfo
|
|
15
|
+
from orchestrator.graphql.types import FormUserPermissionsType, GraphqlFilter, GraphqlSort, OrchestratorInfo
|
|
15
16
|
from orchestrator.schemas.process import ProcessSchema, ProcessStepSchema
|
|
17
|
+
from orchestrator.services.processes import load_process
|
|
16
18
|
from orchestrator.settings import app_settings
|
|
19
|
+
from orchestrator.workflows import get_workflow
|
|
17
20
|
|
|
18
21
|
if TYPE_CHECKING:
|
|
19
22
|
from orchestrator.graphql.schemas.subscription import SubscriptionInterface
|
|
@@ -29,7 +32,11 @@ class ProcessStepType:
|
|
|
29
32
|
name: strawberry.auto
|
|
30
33
|
status: strawberry.auto
|
|
31
34
|
created_by: strawberry.auto
|
|
32
|
-
executed: strawberry.auto
|
|
35
|
+
executed: strawberry.auto = strawberry.field(
|
|
36
|
+
deprecation_reason="Deprecated, use 'started' and 'completed' for step start and completion times"
|
|
37
|
+
)
|
|
38
|
+
started: strawberry.auto
|
|
39
|
+
completed: strawberry.auto
|
|
33
40
|
commit_hash: strawberry.auto
|
|
34
41
|
state: JSON | None
|
|
35
42
|
state_delta: JSON | None
|
|
@@ -74,6 +81,18 @@ class ProcessType:
|
|
|
74
81
|
shortcode=app_settings.DEFAULT_CUSTOMER_SHORTCODE,
|
|
75
82
|
)
|
|
76
83
|
|
|
84
|
+
@strawberry.field(description="Returns user permissions for operations on this process") # type: ignore
|
|
85
|
+
def user_permissions(self, info: OrchestratorInfo) -> FormUserPermissionsType:
|
|
86
|
+
oidc_user = info.context.get_current_user
|
|
87
|
+
workflow = get_workflow(self.workflow_name)
|
|
88
|
+
process = load_process(db.session.get(ProcessTable, self.process_id)) # type: ignore[arg-type]
|
|
89
|
+
auth_resume, auth_retry = get_auth_callbacks(get_current_steps(process), workflow) # type: ignore[arg-type]
|
|
90
|
+
|
|
91
|
+
return FormUserPermissionsType(
|
|
92
|
+
retryAllowed=auth_retry and auth_retry(oidc_user), # type: ignore[arg-type]
|
|
93
|
+
resumeAllowed=auth_resume and auth_resume(oidc_user), # type: ignore[arg-type]
|
|
94
|
+
)
|
|
95
|
+
|
|
77
96
|
@authenticated_field(description="Returns list of subscriptions of the process") # type: ignore
|
|
78
97
|
async def subscriptions(
|
|
79
98
|
self,
|
{orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/product.py
RENAMED
|
@@ -52,21 +52,20 @@ class ProductType:
|
|
|
52
52
|
return await resolve_subscriptions(info, filter_by_with_related_subscriptions, sort_by, first, after)
|
|
53
53
|
|
|
54
54
|
@strawberry.field(description="Returns list of all nested productblock names") # type: ignore
|
|
55
|
-
async def
|
|
56
|
-
|
|
55
|
+
async def all_product_block_names(self) -> list[str]:
|
|
57
56
|
model = get_original_model(self, ProductTable)
|
|
58
57
|
|
|
59
|
-
def
|
|
58
|
+
def get_names(product_blocks: list[ProductBlockTable], visited: set) -> Iterable[str]:
|
|
60
59
|
for product_block in product_blocks:
|
|
60
|
+
if product_block.product_block_id in visited:
|
|
61
|
+
continue
|
|
62
|
+
visited.add(product_block.product_block_id)
|
|
61
63
|
yield product_block.name
|
|
62
|
-
|
|
63
64
|
if product_block.depends_on:
|
|
64
|
-
yield from
|
|
65
|
-
|
|
66
|
-
names: list[str] = list(get_all_pb_names(model.product_blocks))
|
|
67
|
-
names.sort()
|
|
65
|
+
yield from get_names(product_block.depends_on, visited)
|
|
68
66
|
|
|
69
|
-
|
|
67
|
+
names = set(get_names(model.product_blocks, set()))
|
|
68
|
+
return sorted(names)
|
|
70
69
|
|
|
71
70
|
@strawberry.field(description="Return product blocks") # type: ignore
|
|
72
71
|
async def product_blocks(self) -> list[Annotated["ProductBlock", strawberry.lazy(".product_block")]]:
|
{orchestrator_core-4.1.0rc2 → orchestrator_core-4.2.0rc1}/orchestrator/graphql/schemas/workflow.py
RENAMED
|
@@ -5,6 +5,7 @@ import strawberry
|
|
|
5
5
|
from orchestrator.config.assignee import Assignee
|
|
6
6
|
from orchestrator.db import WorkflowTable
|
|
7
7
|
from orchestrator.graphql.schemas.helpers import get_original_model
|
|
8
|
+
from orchestrator.graphql.types import OrchestratorInfo
|
|
8
9
|
from orchestrator.schemas import StepSchema, WorkflowSchema
|
|
9
10
|
from orchestrator.workflows import get_workflow
|
|
10
11
|
|
|
@@ -30,3 +31,11 @@ class Workflow:
|
|
|
30
31
|
@strawberry.field(description="Return all steps for this workflow") # type: ignore
|
|
31
32
|
def steps(self) -> list[Step]:
|
|
32
33
|
return [Step(name=step.name, assignee=step.assignee) for step in get_workflow(self.name).steps] # type: ignore
|
|
34
|
+
|
|
35
|
+
@strawberry.field(description="Return whether the currently logged-in used is allowed to start this workflow") # type: ignore
|
|
36
|
+
def is_allowed(self, info: OrchestratorInfo) -> bool:
|
|
37
|
+
oidc_user = info.context.get_current_user
|
|
38
|
+
workflow_table = get_original_model(self, WorkflowTable)
|
|
39
|
+
workflow = get_workflow(workflow_table.name)
|
|
40
|
+
|
|
41
|
+
return workflow.authorize_callback(oidc_user) # type: ignore
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2022-
|
|
1
|
+
# Copyright 2022-2025 SURF, GÉANT.
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -132,6 +132,12 @@ SCALAR_OVERRIDES: ScalarOverrideType = {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
|
|
135
|
+
@strawberry.type(description="User permissions on a specific process")
|
|
136
|
+
class FormUserPermissionsType:
|
|
137
|
+
retryAllowed: bool
|
|
138
|
+
resumeAllowed: bool
|
|
139
|
+
|
|
140
|
+
|
|
135
141
|
@strawberry.type(description="Generic class to capture errors")
|
|
136
142
|
class MutationError:
|
|
137
143
|
message: str = strawberry.field(description="Error message")
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Changed timestamping fields in process_steps.
|
|
2
|
+
|
|
3
|
+
Revision ID: 93fc5834c7e5
|
|
4
|
+
Revises: 4b58e336d1bf
|
|
5
|
+
Create Date: 2025-07-01 14:20:44.755694
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
from orchestrator import db
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = "93fc5834c7e5"
|
|
16
|
+
down_revision = "4b58e336d1bf"
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade() -> None:
|
|
22
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
23
|
+
op.add_column(
|
|
24
|
+
"process_steps",
|
|
25
|
+
sa.Column(
|
|
26
|
+
"started_at",
|
|
27
|
+
db.UtcTimestamp(timezone=True),
|
|
28
|
+
server_default=sa.text("statement_timestamp()"),
|
|
29
|
+
nullable=False,
|
|
30
|
+
),
|
|
31
|
+
)
|
|
32
|
+
op.alter_column("process_steps", "executed_at", new_column_name="completed_at")
|
|
33
|
+
# conn = op.get_bind()
|
|
34
|
+
# sa.select
|
|
35
|
+
# ### end Alembic commands ###
|
|
36
|
+
# Backfill started_at field correctly using proper aliasing
|
|
37
|
+
op.execute(
|
|
38
|
+
"""
|
|
39
|
+
WITH backfill_started_at AS (
|
|
40
|
+
SELECT
|
|
41
|
+
ps1.stepid,
|
|
42
|
+
COALESCE(prev.completed_at, p.started_at) AS new_started_at
|
|
43
|
+
FROM process_steps ps1
|
|
44
|
+
JOIN processes p ON ps1.pid = p.pid
|
|
45
|
+
LEFT JOIN LATERAL (
|
|
46
|
+
SELECT ps2.completed_at
|
|
47
|
+
FROM process_steps ps2
|
|
48
|
+
WHERE ps2.pid = ps1.pid AND ps2.completed_at < ps1.completed_at
|
|
49
|
+
ORDER BY ps2.completed_at DESC
|
|
50
|
+
LIMIT 1
|
|
51
|
+
) prev ON true
|
|
52
|
+
)
|
|
53
|
+
UPDATE process_steps
|
|
54
|
+
SET started_at = b.new_started_at
|
|
55
|
+
FROM backfill_started_at b
|
|
56
|
+
WHERE process_steps.stepid = b.stepid;
|
|
57
|
+
"""
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def downgrade() -> None:
|
|
62
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
63
|
+
op.drop_column("process_steps", "started_at")
|
|
64
|
+
op.alter_column("process_steps", "completed_at", new_column_name="executed_at")
|
|
65
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""Deprecating workflow target in ProcessSubscriptionTable.
|
|
2
|
+
|
|
3
|
+
Revision ID: 4b58e336d1bf
|
|
4
|
+
Revises: 161918133bec
|
|
5
|
+
Create Date: 2025-07-04 15:27:23.814954
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "4b58e336d1bf"
|
|
14
|
+
down_revision = "161918133bec"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade() -> None:
|
|
20
|
+
op.alter_column("processes_subscriptions", "workflow_target", existing_type=sa.VARCHAR(length=255), nullable=True)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def downgrade() -> None:
|
|
24
|
+
op.alter_column(
|
|
25
|
+
"processes_subscriptions",
|
|
26
|
+
"workflow_target",
|
|
27
|
+
existing_type=sa.VARCHAR(length=255),
|
|
28
|
+
nullable=False,
|
|
29
|
+
existing_server_default=sa.text("'CREATE'::character varying"),
|
|
30
|
+
)
|
|
@@ -49,7 +49,11 @@ class ProcessStepSchema(OrchestratorBaseModel):
|
|
|
49
49
|
name: str
|
|
50
50
|
status: str
|
|
51
51
|
created_by: str | None = None
|
|
52
|
-
executed: datetime | None =
|
|
52
|
+
executed: datetime | None = Field(
|
|
53
|
+
None, deprecated="Deprecated, use 'started' and 'completed' for step start and completion times"
|
|
54
|
+
)
|
|
55
|
+
started: datetime | None = None
|
|
56
|
+
completed: datetime | None = None
|
|
53
57
|
commit_hash: str | None = None
|
|
54
58
|
state: dict[str, Any] | None = None
|
|
55
59
|
state_delta: dict[str, Any] | None = None
|