orchestrator-core 4.0.0rc1__py3-none-any.whl → 4.0.0rc2__py3-none-any.whl
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/__init__.py +1 -1
- orchestrator/cli/generator/templates/new_product_migration.j2 +5 -1
- orchestrator/cli/migrate_tasks.py +5 -5
- orchestrator/cli/migrate_workflows.py +1 -2
- orchestrator/db/models.py +2 -0
- orchestrator/migrations/helpers.py +14 -6
- orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +1 -1
- orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +28 -0
- orchestrator/schedules/validate_subscriptions.py +4 -4
- orchestrator/schemas/workflow.py +1 -0
- orchestrator/services/celery.py +11 -3
- orchestrator/services/processes.py +1 -2
- orchestrator/services/subscriptions.py +4 -1
- orchestrator/services/workflows.py +8 -4
- orchestrator/targets.py +1 -0
- orchestrator/workflows/tasks/validate_product_type.py +2 -2
- orchestrator/workflows/tasks/validate_products.py +3 -6
- orchestrator/workflows/utils.py +1 -1
- {orchestrator_core-4.0.0rc1.dist-info → orchestrator_core-4.0.0rc2.dist-info}/METADATA +1 -1
- {orchestrator_core-4.0.0rc1.dist-info → orchestrator_core-4.0.0rc2.dist-info}/RECORD +22 -21
- {orchestrator_core-4.0.0rc1.dist-info → orchestrator_core-4.0.0rc2.dist-info}/WHEEL +0 -0
- {orchestrator_core-4.0.0rc1.dist-info → orchestrator_core-4.0.0rc2.dist-info}/licenses/LICENSE +0 -0
orchestrator/__init__.py
CHANGED
|
@@ -63,24 +63,28 @@ new_workflows = [
|
|
|
63
63
|
{
|
|
64
64
|
"name": "create_{{ product.variable }}",
|
|
65
65
|
"target": Target.CREATE,
|
|
66
|
+
"is_task": False,
|
|
66
67
|
"description": "Create {{ product.name }}",
|
|
67
68
|
"product_type": "{{ product.type }}",
|
|
68
69
|
},
|
|
69
70
|
{
|
|
70
71
|
"name": "modify_{{ product.variable }}",
|
|
71
72
|
"target": Target.MODIFY,
|
|
73
|
+
"is_task": False,
|
|
72
74
|
"description": "Modify {{ product.name }}",
|
|
73
75
|
"product_type": "{{ product.type }}",
|
|
74
76
|
},
|
|
75
77
|
{
|
|
76
78
|
"name": "terminate_{{ product.variable }}",
|
|
77
79
|
"target": Target.TERMINATE,
|
|
80
|
+
"is_task": False,
|
|
78
81
|
"description": "Terminate {{ product.name }}",
|
|
79
82
|
"product_type": "{{ product.type }}",
|
|
80
83
|
},
|
|
81
84
|
{
|
|
82
85
|
"name": "validate_{{ product.variable }}",
|
|
83
|
-
"target": Target.
|
|
86
|
+
"target": Target.VALIDATE,
|
|
87
|
+
"is_task": True,
|
|
84
88
|
"description": "Validate {{ product.name }}",
|
|
85
89
|
"product_type": "{{ product.type }}",
|
|
86
90
|
},
|
|
@@ -150,22 +150,22 @@ def create_tasks_migration_wizard() -> tuple[list[dict], list[dict]]:
|
|
|
150
150
|
- list of task items to add in the migration
|
|
151
151
|
- list of task items to delete in the migration
|
|
152
152
|
"""
|
|
153
|
-
database_tasks = {
|
|
154
|
-
task.name: task for task in list(db.session.scalars(select(WorkflowTable))) if task.target == Target.SYSTEM
|
|
155
|
-
}
|
|
153
|
+
database_tasks = {task.name: task for task in list(db.session.scalars(select(WorkflowTable))) if task.is_task}
|
|
156
154
|
registered_wf_instances = {
|
|
157
155
|
task: cast(Workflow, get_workflow(task)) for task in orchestrator.workflows.ALL_WORKFLOWS.keys()
|
|
158
156
|
}
|
|
159
157
|
|
|
158
|
+
is_task = [Target.SYSTEM, Target.VALIDATE]
|
|
159
|
+
|
|
160
160
|
registered_tasks = dict(
|
|
161
161
|
filter(
|
|
162
|
-
lambda task: task[1].target
|
|
162
|
+
lambda task: task[1].target in is_task and task[0] in database_tasks.keys(),
|
|
163
163
|
registered_wf_instances.items(),
|
|
164
164
|
)
|
|
165
165
|
)
|
|
166
166
|
available_tasks = dict(
|
|
167
167
|
filter(
|
|
168
|
-
lambda task: task[1].target
|
|
168
|
+
lambda task: task[1].target in is_task and task[0] not in database_tasks.keys(),
|
|
169
169
|
registered_wf_instances.items(),
|
|
170
170
|
)
|
|
171
171
|
)
|
|
@@ -11,7 +11,6 @@ import orchestrator.workflows
|
|
|
11
11
|
from orchestrator.cli.helpers.input_helpers import _enumerate_menu_keys, _prompt_user_menu, get_user_input
|
|
12
12
|
from orchestrator.cli.helpers.print_helpers import COLOR, noqa_print, print_fmt, str_fmt
|
|
13
13
|
from orchestrator.db import ProductTable, WorkflowTable, db
|
|
14
|
-
from orchestrator.targets import Target
|
|
15
14
|
from orchestrator.workflows import LazyWorkflowInstance, get_workflow
|
|
16
15
|
|
|
17
16
|
# Workflows are registered via migrations with product type. For every product with the given product_type, there will be an entry in products_workflows.
|
|
@@ -183,7 +182,7 @@ def create_workflows_migration_wizard() -> tuple[list[dict], list[dict]]:
|
|
|
183
182
|
"""
|
|
184
183
|
database_workflows = list(db.session.scalars(select(WorkflowTable)))
|
|
185
184
|
registered_workflows = orchestrator.workflows.ALL_WORKFLOWS
|
|
186
|
-
system_workflow_names = {wf.name for wf in database_workflows if wf.
|
|
185
|
+
system_workflow_names = {wf.name for wf in database_workflows if wf.is_task}
|
|
187
186
|
registered_non_system_workflows = {k: v for k, v in registered_workflows.items() if k not in system_workflow_names}
|
|
188
187
|
|
|
189
188
|
unregistered_workflows = [wf for wf in database_workflows if wf.name not in registered_workflows.keys()]
|
orchestrator/db/models.py
CHANGED
|
@@ -412,6 +412,8 @@ class WorkflowTable(BaseModel):
|
|
|
412
412
|
)
|
|
413
413
|
processes = relationship("ProcessTable", cascade="all, delete-orphan", back_populates="workflow")
|
|
414
414
|
|
|
415
|
+
is_task = mapped_column(Boolean, nullable=False, server_default=text("false"))
|
|
416
|
+
|
|
415
417
|
@staticmethod
|
|
416
418
|
def select() -> Select:
|
|
417
419
|
return (
|
|
@@ -135,18 +135,21 @@ def create_workflow(conn: sa.engine.Connection, workflow: dict) -> None:
|
|
|
135
135
|
>>> workflow = {
|
|
136
136
|
"name": "workflow_name",
|
|
137
137
|
"target": "SYSTEM",
|
|
138
|
+
"is_task": False,
|
|
138
139
|
"description": "workflow description",
|
|
139
140
|
"product_type": "product_type",
|
|
140
141
|
}
|
|
141
142
|
>>> create_workflow(conn, workflow)
|
|
142
143
|
"""
|
|
144
|
+
if not workflow.get("is_task", False):
|
|
145
|
+
workflow["is_task"] = False
|
|
143
146
|
|
|
144
147
|
conn.execute(
|
|
145
148
|
sa.text(
|
|
146
149
|
"""
|
|
147
150
|
WITH new_workflow AS (
|
|
148
|
-
INSERT INTO workflows(name, target, description)
|
|
149
|
-
VALUES (:name, :target, :description)
|
|
151
|
+
INSERT INTO workflows(name, target, is_task, description)
|
|
152
|
+
VALUES (:name, :target, :is_task, :description)
|
|
150
153
|
ON CONFLICT DO NOTHING
|
|
151
154
|
RETURNING workflow_id)
|
|
152
155
|
INSERT
|
|
@@ -184,8 +187,8 @@ def create_task(conn: sa.engine.Connection, task: dict) -> None:
|
|
|
184
187
|
conn.execute(
|
|
185
188
|
sa.text(
|
|
186
189
|
"""
|
|
187
|
-
INSERT INTO workflows(name, target, description)
|
|
188
|
-
VALUES (:name, 'SYSTEM', :description)
|
|
190
|
+
INSERT INTO workflows(name, target, is_task, description)
|
|
191
|
+
VALUES (:name, 'SYSTEM', TRUE, :description)
|
|
189
192
|
ON CONFLICT DO NOTHING
|
|
190
193
|
RETURNING workflow_id
|
|
191
194
|
"""
|
|
@@ -206,6 +209,7 @@ def create_workflows(conn: sa.engine.Connection, new: dict) -> None:
|
|
|
206
209
|
"workflow_name": {
|
|
207
210
|
"workflow_id": "f2702074-3203-454c-b298-6dfa7675423d",
|
|
208
211
|
"target": "CREATE",
|
|
212
|
+
"is_task": False,
|
|
209
213
|
"description": "Workflow description",
|
|
210
214
|
"tag": "ProductBlockName1",
|
|
211
215
|
"search_phrase": "Search Phrase%",
|
|
@@ -214,12 +218,16 @@ def create_workflows(conn: sa.engine.Connection, new: dict) -> None:
|
|
|
214
218
|
"""
|
|
215
219
|
for name, workflow in new.items():
|
|
216
220
|
workflow["name"] = name
|
|
221
|
+
|
|
222
|
+
if not workflow.get("is_task", False):
|
|
223
|
+
workflow["is_task"] = False
|
|
224
|
+
|
|
217
225
|
conn.execute(
|
|
218
226
|
sa.text(
|
|
219
227
|
"""
|
|
220
228
|
WITH new_workflow AS (
|
|
221
|
-
INSERT INTO workflows(workflow_id, name, target, description)
|
|
222
|
-
VALUES (:workflow_id, :name, :target, :description)
|
|
229
|
+
INSERT INTO workflows(workflow_id, name, target, is_task, description)
|
|
230
|
+
VALUES (:workflow_id, :name, :target, :is_task, :description)
|
|
223
231
|
RETURNING workflow_id)
|
|
224
232
|
INSERT
|
|
225
233
|
INTO products_workflows (product_id, workflow_id)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Add is_task to workflow.
|
|
2
|
+
|
|
3
|
+
Revision ID: 161918133bec
|
|
4
|
+
Revises: 68d14db1b8da
|
|
5
|
+
Create Date: 2025-05-08 11:25:51.966410
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
from alembic import op
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "161918133bec"
|
|
14
|
+
down_revision = "68d14db1b8da"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade() -> None:
|
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
21
|
+
op.add_column("workflows", sa.Column("is_task", sa.Boolean(), server_default=sa.text("false"), nullable=False))
|
|
22
|
+
# ### end Alembic commands ###
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def downgrade() -> None:
|
|
26
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
27
|
+
op.drop_column("workflows", "is_task")
|
|
28
|
+
# ### end Alembic commands ###
|
|
@@ -22,7 +22,7 @@ from orchestrator.services.subscriptions import (
|
|
|
22
22
|
get_subscriptions_on_product_table_in_sync,
|
|
23
23
|
)
|
|
24
24
|
from orchestrator.services.workflows import (
|
|
25
|
-
|
|
25
|
+
get_validation_product_workflows_for_subscription,
|
|
26
26
|
start_validation_workflow_for_workflows,
|
|
27
27
|
)
|
|
28
28
|
from orchestrator.settings import app_settings
|
|
@@ -42,9 +42,9 @@ def validate_subscriptions() -> None:
|
|
|
42
42
|
subscriptions = get_subscriptions_on_product_table_in_sync()
|
|
43
43
|
|
|
44
44
|
for subscription in subscriptions:
|
|
45
|
-
|
|
45
|
+
validation_product_workflows = get_validation_product_workflows_for_subscription(subscription)
|
|
46
46
|
|
|
47
|
-
if not
|
|
47
|
+
if not validation_product_workflows:
|
|
48
48
|
logger.warning(
|
|
49
49
|
"SubscriptionTable has no validation workflow",
|
|
50
50
|
subscription=subscription,
|
|
@@ -52,4 +52,4 @@ def validate_subscriptions() -> None:
|
|
|
52
52
|
)
|
|
53
53
|
break
|
|
54
54
|
|
|
55
|
-
start_validation_workflow_for_workflows(subscription=subscription, workflows=
|
|
55
|
+
start_validation_workflow_for_workflows(subscription=subscription, workflows=validation_product_workflows)
|
orchestrator/schemas/workflow.py
CHANGED
orchestrator/services/celery.py
CHANGED
|
@@ -24,7 +24,7 @@ from orchestrator.api.error_handling import raise_status
|
|
|
24
24
|
from orchestrator.db import ProcessTable, db
|
|
25
25
|
from orchestrator.services.input_state import store_input_state
|
|
26
26
|
from orchestrator.services.processes import create_process, delete_process
|
|
27
|
-
from orchestrator.
|
|
27
|
+
from orchestrator.services.workflows import get_workflow_by_name
|
|
28
28
|
from orchestrator.workflows import get_workflow
|
|
29
29
|
from pydantic_forms.types import State
|
|
30
30
|
|
|
@@ -51,7 +51,11 @@ def _celery_start_process(
|
|
|
51
51
|
if not workflow:
|
|
52
52
|
raise_status(HTTPStatus.NOT_FOUND, "Workflow does not exist")
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
wf_table = get_workflow_by_name(workflow.name)
|
|
55
|
+
if not wf_table:
|
|
56
|
+
raise_status(HTTPStatus.NOT_FOUND, "Workflow in Database does not exist")
|
|
57
|
+
|
|
58
|
+
task_name = NEW_TASK if wf_table.is_task else NEW_WORKFLOW
|
|
55
59
|
trigger_task = get_celery_task(task_name)
|
|
56
60
|
pstat = create_process(workflow_key, user_inputs, user)
|
|
57
61
|
try:
|
|
@@ -80,7 +84,11 @@ def _celery_resume_process(
|
|
|
80
84
|
last_process_status = process.last_status
|
|
81
85
|
workflow = pstat.workflow
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
wf_table = get_workflow_by_name(workflow.name)
|
|
88
|
+
if not workflow or not wf_table:
|
|
89
|
+
raise_status(HTTPStatus.NOT_FOUND, "Workflow does not exist")
|
|
90
|
+
|
|
91
|
+
task_name = RESUME_TASK if wf_table.is_task else RESUME_WORKFLOW
|
|
84
92
|
trigger_task = get_celery_task(task_name)
|
|
85
93
|
|
|
86
94
|
user_inputs = user_inputs or [{}]
|
|
@@ -34,7 +34,6 @@ from orchestrator.services.input_state import store_input_state
|
|
|
34
34
|
from orchestrator.services.settings import get_engine_settings_for_update
|
|
35
35
|
from orchestrator.services.workflows import get_workflow_by_name
|
|
36
36
|
from orchestrator.settings import ExecutorType, app_settings
|
|
37
|
-
from orchestrator.targets import Target
|
|
38
37
|
from orchestrator.types import BroadcastFunc
|
|
39
38
|
from orchestrator.utils.datetime import nowtz
|
|
40
39
|
from orchestrator.utils.errors import error_state_to_dict
|
|
@@ -108,7 +107,7 @@ def _db_create_process(stat: ProcessStat) -> None:
|
|
|
108
107
|
workflow_id=wf_table.workflow_id,
|
|
109
108
|
last_status=ProcessStatus.CREATED,
|
|
110
109
|
created_by=stat.current_user,
|
|
111
|
-
is_task=
|
|
110
|
+
is_task=wf_table.is_task,
|
|
112
111
|
)
|
|
113
112
|
db.session.add(p)
|
|
114
113
|
db.session.commit()
|
|
@@ -505,6 +505,7 @@ TARGET_DEFAULT_USABLE_MAP: dict[Target, list[str]] = {
|
|
|
505
505
|
Target.MODIFY: ["active"],
|
|
506
506
|
Target.TERMINATE: ["active", "provisioning"],
|
|
507
507
|
Target.SYSTEM: ["active"],
|
|
508
|
+
Target.VALIDATE: ["active"],
|
|
508
509
|
}
|
|
509
510
|
|
|
510
511
|
WF_USABLE_MAP: dict[str, list[str]] = {}
|
|
@@ -530,6 +531,7 @@ def subscription_workflows(subscription: SubscriptionTable) -> dict[str, Any]:
|
|
|
530
531
|
... "modify": [],
|
|
531
532
|
... "terminate": [],
|
|
532
533
|
... "system": [],
|
|
534
|
+
... "validate": [],
|
|
533
535
|
... }
|
|
534
536
|
|
|
535
537
|
"""
|
|
@@ -549,9 +551,10 @@ def subscription_workflows(subscription: SubscriptionTable) -> dict[str, Any]:
|
|
|
549
551
|
"modify": [],
|
|
550
552
|
"terminate": [],
|
|
551
553
|
"system": [],
|
|
554
|
+
"validate": [],
|
|
552
555
|
}
|
|
553
556
|
for workflow in subscription.product.workflows:
|
|
554
|
-
if workflow.name in WF_USABLE_WHILE_OUT_OF_SYNC or workflow.
|
|
557
|
+
if workflow.name in WF_USABLE_WHILE_OUT_OF_SYNC or workflow.is_task:
|
|
555
558
|
# validations and modify note are also possible with: not in sync or locked relations
|
|
556
559
|
workflow_json = {"name": workflow.name, "description": workflow.description}
|
|
557
560
|
else:
|
|
@@ -39,6 +39,7 @@ def _to_workflow_schema(workflow: WorkflowTable, include_steps: bool = False) ->
|
|
|
39
39
|
workflow_id=workflow.workflow_id,
|
|
40
40
|
name=workflow.name,
|
|
41
41
|
target=workflow.target,
|
|
42
|
+
is_task=workflow.is_task,
|
|
42
43
|
description=workflow.description,
|
|
43
44
|
created_at=workflow.created_at,
|
|
44
45
|
**extra_kwargs,
|
|
@@ -63,10 +64,10 @@ def get_workflow_by_name(workflow_name: str) -> WorkflowTable | None:
|
|
|
63
64
|
return db.session.scalar(select(WorkflowTable).where(WorkflowTable.name == workflow_name))
|
|
64
65
|
|
|
65
66
|
|
|
66
|
-
def
|
|
67
|
+
def get_validation_product_workflows_for_subscription(
|
|
67
68
|
subscription: SubscriptionTable,
|
|
68
69
|
) -> list:
|
|
69
|
-
return [workflow.name for workflow in subscription.product.workflows if workflow.target == Target.
|
|
70
|
+
return [workflow.name for workflow in subscription.product.workflows if workflow.target == Target.VALIDATE]
|
|
70
71
|
|
|
71
72
|
|
|
72
73
|
def start_validation_workflow_for_workflows(
|
|
@@ -78,9 +79,12 @@ def start_validation_workflow_for_workflows(
|
|
|
78
79
|
result = []
|
|
79
80
|
|
|
80
81
|
for workflow_name in workflows:
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
target_system = TARGET_DEFAULT_USABLE_MAP[Target.SYSTEM]
|
|
83
|
+
system_usable_when = WF_USABLE_MAP.get(workflow_name, target_system)
|
|
84
|
+
target_validate = TARGET_DEFAULT_USABLE_MAP[Target.VALIDATE]
|
|
85
|
+
validate_usable_when = WF_USABLE_MAP.get(workflow_name, target_validate)
|
|
83
86
|
|
|
87
|
+
usable_when = system_usable_when + validate_usable_when
|
|
84
88
|
if subscription.status in usable_when and (
|
|
85
89
|
product_type_filter is None or subscription.product.product_type == product_type_filter
|
|
86
90
|
):
|
orchestrator/targets.py
CHANGED
|
@@ -22,7 +22,7 @@ from orchestrator.services.subscriptions import (
|
|
|
22
22
|
get_subscriptions_on_product_table_in_sync,
|
|
23
23
|
)
|
|
24
24
|
from orchestrator.services.workflows import (
|
|
25
|
-
|
|
25
|
+
get_validation_product_workflows_for_subscription,
|
|
26
26
|
start_validation_workflow_for_workflows,
|
|
27
27
|
)
|
|
28
28
|
from orchestrator.targets import Target
|
|
@@ -62,7 +62,7 @@ def validate_product_type(product_type: str) -> State:
|
|
|
62
62
|
subscriptions = get_subscriptions_on_product_table_in_sync()
|
|
63
63
|
|
|
64
64
|
for subscription in subscriptions:
|
|
65
|
-
system_product_workflows =
|
|
65
|
+
system_product_workflows = get_validation_product_workflows_for_subscription(
|
|
66
66
|
subscription=subscription,
|
|
67
67
|
)
|
|
68
68
|
|
|
@@ -105,13 +105,10 @@ def check_that_products_have_create_modify_and_terminate_workflows() -> State:
|
|
|
105
105
|
product_data = get_products(filters=[ProductTable.status == "active"])
|
|
106
106
|
|
|
107
107
|
workflows_not_complete: list = []
|
|
108
|
+
targets = ["CREATE", "TERMINATE", "MODIFY", "VALIDATE"]
|
|
108
109
|
for product in product_data:
|
|
109
|
-
workflows = {
|
|
110
|
-
|
|
111
|
-
for c in product.workflows
|
|
112
|
-
if c.target in ["CREATE", "TERMINATE", "MODIFY", "SYSTEM"] and c.name != "modify_note"
|
|
113
|
-
}
|
|
114
|
-
if len(workflows) < 4:
|
|
110
|
+
workflows = {c.target for c in product.workflows if c.target in targets and c.name != "modify_note"}
|
|
111
|
+
if len(workflows) < len(targets):
|
|
115
112
|
workflows_not_complete.append(product.name)
|
|
116
113
|
|
|
117
114
|
# Do not raise an error but only report it in the `State` to allow exceptions.
|
orchestrator/workflows/utils.py
CHANGED
|
@@ -344,7 +344,7 @@ def validate_workflow(description: str) -> Callable[[Callable[[], StepList]], Wo
|
|
|
344
344
|
def _validate_workflow(f: Callable[[], StepList]) -> Workflow:
|
|
345
345
|
steplist = init >> store_process_subscription(Target.SYSTEM) >> unsync_unchecked >> f() >> resync >> done
|
|
346
346
|
|
|
347
|
-
return make_workflow(f, description, validate_initial_input_form_generator, Target.
|
|
347
|
+
return make_workflow(f, description, validate_initial_input_form_generator, Target.VALIDATE, steplist)
|
|
348
348
|
|
|
349
349
|
return _validate_workflow
|
|
350
350
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
orchestrator/__init__.py,sha256=
|
|
1
|
+
orchestrator/__init__.py,sha256=_4qDYGxoCurHceKtJMPSdPiXXCzkD0XpCJiQy6gBP5g,1066
|
|
2
2
|
orchestrator/app.py,sha256=VN54_Zsx5x_3ym8aFadATg67a4J5lv8H-pxnPlR3RkM,11668
|
|
3
3
|
orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
|
|
4
4
|
orchestrator/log_config.py,sha256=1tPRX5q65e57a6a_zEii_PFK8SzWT0mnA5w2sKg4hh8,1853
|
|
5
5
|
orchestrator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
orchestrator/security.py,sha256=iXFxGxab54aav7oHEKLAVkTgrQMJGHy6IYLojEnD7gI,2422
|
|
7
7
|
orchestrator/settings.py,sha256=21BT1SviPllSL4-M1Qc-8zdgF_Sh7p79WC8sR_AmTmE,3826
|
|
8
|
-
orchestrator/targets.py,sha256=
|
|
8
|
+
orchestrator/targets.py,sha256=WizBgnp8hWX9YLFUIju7ewSubiwQqinCvyiYNcXHbHI,802
|
|
9
9
|
orchestrator/types.py,sha256=qzs7xx5AYRmKbpYRyJJP3wuDb0W0bcAzefCN0RWLAco,15459
|
|
10
10
|
orchestrator/version.py,sha256=b58e08lxs47wUNXv0jXFO_ykpksmytuzEXD4La4W-NQ,1366
|
|
11
11
|
orchestrator/workflow.py,sha256=T_3Z1PrlF70C16ehAthKRF1hd3jpwV-MREDVxSLfxOw,44063
|
|
@@ -33,8 +33,8 @@ orchestrator/cli/database.py,sha256=qig-WqUtiDITz4KePxzcqZtC0FPTWRs_3l19qQpqIGA,
|
|
|
33
33
|
orchestrator/cli/generate.py,sha256=SBaYfRijXPF9r3VxarPKTiDzDcB6GBMMQvecQIb_ZLQ,7377
|
|
34
34
|
orchestrator/cli/main.py,sha256=GC_kxa9OZ-Y0ig_klfWc6ysOQuPVTUmTmDRj3m8cJHA,983
|
|
35
35
|
orchestrator/cli/migrate_domain_models.py,sha256=OhjNuIheytgShpMYCZ18leNUzk17ExhtkCqx7Ww03R8,20371
|
|
36
|
-
orchestrator/cli/migrate_tasks.py,sha256=
|
|
37
|
-
orchestrator/cli/migrate_workflows.py,sha256
|
|
36
|
+
orchestrator/cli/migrate_tasks.py,sha256=bju8XColjSZD0v3rS4kl-24dLr8En_H4-6enBmqd494,7255
|
|
37
|
+
orchestrator/cli/migrate_workflows.py,sha256=nxUpx0vgEIc_8aJrjAyrw3E9Dt8JmaamTts8oiQ4vHY,8923
|
|
38
38
|
orchestrator/cli/migration_helpers.py,sha256=C5tpkP5WEBr7G9S-1k1hgSI8ili6xd9Z5ygc9notaK0,4110
|
|
39
39
|
orchestrator/cli/scheduler.py,sha256=iCKBWYUwQIYTDqKQ9rMVvs2sNiAzE-J2SkV170TPP2g,1896
|
|
40
40
|
orchestrator/cli/domain_gen_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -83,7 +83,7 @@ orchestrator/cli/generator/templates/lazy_workflow_instance.j2,sha256=BYB6LwE19O
|
|
|
83
83
|
orchestrator/cli/generator/templates/list_definitions.j2,sha256=XS-F5XXy4HOdsZ-xahprwxfhU0UaiF4VeopkIxfoado,277
|
|
84
84
|
orchestrator/cli/generator/templates/macros.j2,sha256=fEODRym4gLfL40w9OelXFMDtAjtzmN5nccWDk86oTNI,904
|
|
85
85
|
orchestrator/cli/generator/templates/modify_product.j2,sha256=M1WDMmPwfXpUcuZUa-H5GnlKAr1t_xCQliLa66FI-YU,5057
|
|
86
|
-
orchestrator/cli/generator/templates/new_product_migration.j2,sha256=
|
|
86
|
+
orchestrator/cli/generator/templates/new_product_migration.j2,sha256=XTeOmv8nVNfGXx6pfSGVwRk282Xx3lnw-7bkpHkd-Tk,3128
|
|
87
87
|
orchestrator/cli/generator/templates/product.j2,sha256=gcN1poWRuGWbsLrQv0Z8SXO6MGuXBHBr33UvQtqsF8E,1241
|
|
88
88
|
orchestrator/cli/generator/templates/product_block.j2,sha256=X5ynyBG39UiYekPHms7IkSHmxq2j-2OrhAYsFaRqktU,2454
|
|
89
89
|
orchestrator/cli/generator/templates/shared_forms.j2,sha256=tXbauuMMExwHLYLJVkmAJ74SSFriXlwpOyd04jwWE0k,545
|
|
@@ -106,7 +106,7 @@ orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,1
|
|
|
106
106
|
orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
|
|
107
107
|
orchestrator/db/listeners.py,sha256=UBPYcH0FE3a7aZQu_D0O_JMXpXIRYXC0gjSAvlv5GZo,1142
|
|
108
108
|
orchestrator/db/loaders.py,sha256=ez6JzQ3IKVkC_oLAkVlIIiI8Do7hXbdcPKCvUSLxRog,7962
|
|
109
|
-
orchestrator/db/models.py,sha256=
|
|
109
|
+
orchestrator/db/models.py,sha256=92lkqI4u3Si2tEMSTnMb5Uv08CSjqkgotgyEYqLvFeI,27302
|
|
110
110
|
orchestrator/db/filters/__init__.py,sha256=RUj6P0XxEBhYj0SN5wH5-Vf_Wt_ilZR_n9DSar5m9oM,371
|
|
111
111
|
orchestrator/db/filters/filters.py,sha256=55RtpQwM2rhrk4A6CCSeSXoo-BT9GnQoNTryA8CtLEg,5020
|
|
112
112
|
orchestrator/db/filters/process.py,sha256=xvGhyfo_MZ1xhLvFC6yULjcT4mJk0fKc1glJIYgsWLE,4018
|
|
@@ -205,7 +205,7 @@ orchestrator/graphql/utils/to_graphql_result_page.py,sha256=8ObkJP8reVf-TQOQVPKv
|
|
|
205
205
|
orchestrator/migrations/README,sha256=heMzebYwlGhnE8_4CWJ4LS74WoEZjBy-S-mIJRxAEKI,39
|
|
206
206
|
orchestrator/migrations/alembic.ini,sha256=kMoADqhGeubU8xanILNaqm4oixLy9m4ngYtdGpZcc7I,873
|
|
207
207
|
orchestrator/migrations/env.py,sha256=M_cPoAL2axuuup5fvMy8I_WTPHEw0RbPEHkhZ3QEGoE,3740
|
|
208
|
-
orchestrator/migrations/helpers.py,sha256=
|
|
208
|
+
orchestrator/migrations/helpers.py,sha256=xwi1Z-0MMZJ1Bk-HXkb6f_RU7BmO3ajK5a4qqO94elc,44068
|
|
209
209
|
orchestrator/migrations/script.py.mako,sha256=607Zrgp-Z-m9WGLt4wewN1QDOmHeifxcePUdADkSZyM,510
|
|
210
210
|
orchestrator/migrations/templates/alembic.ini.j2,sha256=jA-QykVparwWSNt5XDP0Zk7epLOhK7D87Af-i2shJV4,905
|
|
211
211
|
orchestrator/migrations/templates/env.py.j2,sha256=RfLAQItZ56Jlzwi6LJfBo92m1-th_bdfkFKD1mwTZIE,2821
|
|
@@ -231,16 +231,17 @@ orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_
|
|
|
231
231
|
orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py,sha256=xAhe74U0ZiVRo9Z8Uq7491RBbATMMUnYpTBjbG-BYL0,1690
|
|
232
232
|
orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py,sha256=O0GfCISIDnyohGf3Ot_2HKedGRbMqLVox6t7Wd3PMvo,894
|
|
233
233
|
orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py,sha256=RZpLkWP1yekeZ68feO5v4LZYluKvnnIKRNDCE4tI9HM,1753
|
|
234
|
-
orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py,sha256=
|
|
234
|
+
orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py,sha256=uh5J2bR_UERqlNrDjDBSfiAdEfI9YQzgR9-t9ordFOo,847
|
|
235
235
|
orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py,sha256=jtwDFOh-NlE31aH5dFmbynb23TZN6Mkzevxx-KLP7KE,776
|
|
236
236
|
orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql,sha256=hPldk0DAesUbHv3Qd_N7U-cAk-t1wIgxt4FOA120gQ8,1776
|
|
237
237
|
orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py,sha256=6kHRNSZxUze2jy7b8uRvkt5mzsax10Z-Z3lsACtPLRM,1067
|
|
238
|
+
orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py,sha256=VLFDHFYRWn5ktUba0KuSPWyvjYJdfN1WypWmOPqIW18,721
|
|
238
239
|
orchestrator/schedules/__init__.py,sha256=JnnaglfK1qYUBKI6Dd9taV-tCZIPlAdAkHtnkJDMXxY,1066
|
|
239
240
|
orchestrator/schedules/resume_workflows.py,sha256=kSotzTAXjX7p9fpSYiGOpuxuTQfv54eRFAe0YSG0DHc,832
|
|
240
241
|
orchestrator/schedules/scheduling.py,sha256=ehtwgpbvMOk1jhn-hHgVzg_9wLJkI6l3mRY3DcO9ZVY,1526
|
|
241
242
|
orchestrator/schedules/task_vacuum.py,sha256=eovnuKimU8SFRw1IF62MsAVFSdgeeV1u57kapUbz8As,821
|
|
242
243
|
orchestrator/schedules/validate_products.py,sha256=YMr7ASSqdXM6pd6oZu0kr8mfmH8If16MzprrsHdN_ZU,1234
|
|
243
|
-
orchestrator/schedules/validate_subscriptions.py,sha256=
|
|
244
|
+
orchestrator/schedules/validate_subscriptions.py,sha256=9SYvsn4BJ5yo_1nu555hWjl5XffTx7QMaRhH5oOjM9E,2042
|
|
244
245
|
orchestrator/schemas/__init__.py,sha256=YDyZ0YBvzB4ML9oDBCBPGnBvf680zFFgUzg7X0tYBRY,2326
|
|
245
246
|
orchestrator/schemas/base.py,sha256=Vc444LetsINLRhG2SxW9Bq01hOzChPOhQWCImQTr-As,930
|
|
246
247
|
orchestrator/schemas/engine_settings.py,sha256=LF8al7tJssiilb5A4emPtUYo0tVDSaT1Lvo_DN_ttrY,1296
|
|
@@ -252,21 +253,21 @@ orchestrator/schemas/product_block.py,sha256=kCqvm6qadHpegMr9aWI_fYX-T7mS-5S-ldP
|
|
|
252
253
|
orchestrator/schemas/resource_type.py,sha256=VDju4XywcDDLxdpbWU62RTvR9QF8x_GRrpTlN_NE8uI,1064
|
|
253
254
|
orchestrator/schemas/subscription.py,sha256=-jXyHZIed9Xlia18ksSDyenblNN6Q2yM2FlGELyJ458,3423
|
|
254
255
|
orchestrator/schemas/subscription_descriptions.py,sha256=Ft_jw1U0bf9Z0U8O4OWfLlcl0mXCVT_qYVagBP3GbIQ,1262
|
|
255
|
-
orchestrator/schemas/workflow.py,sha256=
|
|
256
|
+
orchestrator/schemas/workflow.py,sha256=gBpLXttgU3cSkVyEqr5ji4yBskl-n7QNmEerUr9UXt0,2003
|
|
256
257
|
orchestrator/services/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
257
|
-
orchestrator/services/celery.py,sha256=
|
|
258
|
+
orchestrator/services/celery.py,sha256=ezw7IxkIZbmaRJt-9_Iwvn86TJV3Y3DTHI7Qjh0-r9s,5075
|
|
258
259
|
orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
|
|
259
260
|
orchestrator/services/input_state.py,sha256=HF7wl9fWdaAW8pdCCqbuYoKyNj8dY0g8Ff8vXis8z5A,2211
|
|
260
261
|
orchestrator/services/process_broadcast_thread.py,sha256=D44YbjF8mRqGuznkRUV4SoRn1J0lfy_x1H508GnSVlU,4649
|
|
261
|
-
orchestrator/services/processes.py,sha256=
|
|
262
|
+
orchestrator/services/processes.py,sha256=rTH6zLNsun3qDCPguz2LYS87MQR_LJREIPrgkGS6kwk,30494
|
|
262
263
|
orchestrator/services/products.py,sha256=BP4KyE8zO-8z7Trrs5T6zKBOw53S9BfBJnHWI3p6u5Y,1943
|
|
263
264
|
orchestrator/services/resource_types.py,sha256=_QBy_JOW_X3aSTqH0CuLrq4zBJL0p7Q-UDJUcuK2_qc,884
|
|
264
265
|
orchestrator/services/settings.py,sha256=u-834F4KWloXS8zi7R9mp-D3cjl-rbVjKJRU35IqhXo,2723
|
|
265
266
|
orchestrator/services/subscription_relations.py,sha256=9C126TUfFvyBe7y4x007kH_dvxJ9pZ1zSnaWeH6HC5k,12261
|
|
266
|
-
orchestrator/services/subscriptions.py,sha256=
|
|
267
|
+
orchestrator/services/subscriptions.py,sha256=nr2HI89nC0lYjzTh2j-lEQ5cPQK43LNZv3gvP6jbepw,27189
|
|
267
268
|
orchestrator/services/tasks.py,sha256=NjPkuauQoh9UJDcjA7OcKFgPk0i6NoKdDO7HlpGbBJ8,6575
|
|
268
269
|
orchestrator/services/translations.py,sha256=GyP8soUFGej8AS8uulBsk10CCK6Kwfjv9AHMFm3ElQY,1713
|
|
269
|
-
orchestrator/services/workflows.py,sha256=
|
|
270
|
+
orchestrator/services/workflows.py,sha256=iEkt2OBuTwkDru4V6ZSKatnw0b96ZdPV-VQqeZ9EOgU,4015
|
|
270
271
|
orchestrator/utils/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
271
272
|
orchestrator/utils/crypt.py,sha256=18eNamYWMllPkxyRtWIde3FDr3rSF74R5SAL6WsCj9Y,5584
|
|
272
273
|
orchestrator/utils/datetime.py,sha256=a1WQ_yvu7MA0TiaRpC5avwbOSFdrj4eMrV4a7I2sD5Q,1477
|
|
@@ -294,14 +295,14 @@ orchestrator/workflows/__init__.py,sha256=NzIGGI-8SNAwCk2YqH6sHhEWbgAY457ntDwjO1
|
|
|
294
295
|
orchestrator/workflows/modify_note.py,sha256=l6QtijRPv8gnHxzwTz_4nWIPcZ0FcKQh_yFbtjYEDMg,2163
|
|
295
296
|
orchestrator/workflows/removed_workflow.py,sha256=V0Da5TEdfLdZZKD38ig-MTp3_IuE7VGqzHHzvPYQmLI,909
|
|
296
297
|
orchestrator/workflows/steps.py,sha256=ulpheoHaCOE1qh71Bja4KW4pItQh1Z6q4QU4tn5GtNk,6067
|
|
297
|
-
orchestrator/workflows/utils.py,sha256=
|
|
298
|
+
orchestrator/workflows/utils.py,sha256=yBwfITlseimyLEzbwI0ehOAlr-xI1N3WGVudFz4boXk,13778
|
|
298
299
|
orchestrator/workflows/tasks/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
299
300
|
orchestrator/workflows/tasks/cleanup_tasks_log.py,sha256=BfWYbPXhnLAHUJ0mlODDnjZnQQAvKCZJDVTwbwOWI04,1624
|
|
300
301
|
orchestrator/workflows/tasks/resume_workflows.py,sha256=MzJqlSXUvKStkT7NGzxZyRlfAer_ezYm-kjUqaZi0yc,2359
|
|
301
|
-
orchestrator/workflows/tasks/validate_product_type.py,sha256=
|
|
302
|
-
orchestrator/workflows/tasks/validate_products.py,sha256=
|
|
302
|
+
orchestrator/workflows/tasks/validate_product_type.py,sha256=paG-NAY1bdde3Adt8zItkcBKf5Pxw6f5ngGW6an6dYU,3192
|
|
303
|
+
orchestrator/workflows/tasks/validate_products.py,sha256=GZJBoFF-WMphS7ghMs2-gqvV2iL1F0POhk0uSNt93n0,8510
|
|
303
304
|
orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
|
|
304
|
-
orchestrator_core-4.0.
|
|
305
|
-
orchestrator_core-4.0.
|
|
306
|
-
orchestrator_core-4.0.
|
|
307
|
-
orchestrator_core-4.0.
|
|
305
|
+
orchestrator_core-4.0.0rc2.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
|
|
306
|
+
orchestrator_core-4.0.0rc2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
307
|
+
orchestrator_core-4.0.0rc2.dist-info/METADATA,sha256=eEc0N4MXX03Q--Jx61bXgZqQ3zwjzjdwLUhVl_5eGFM,5032
|
|
308
|
+
orchestrator_core-4.0.0rc2.dist-info/RECORD,,
|
|
File without changes
|
{orchestrator_core-4.0.0rc1.dist-info → orchestrator_core-4.0.0rc2.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|