orchestrator-core 3.1.2rc4__py3-none-any.whl → 3.2.0__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.
Files changed (36) hide show
  1. orchestrator/__init__.py +1 -1
  2. orchestrator/api/api_v1/endpoints/processes.py +6 -9
  3. orchestrator/cli/generator/generator/workflow.py +13 -1
  4. orchestrator/cli/generator/templates/modify_product.j2 +9 -0
  5. orchestrator/db/__init__.py +2 -0
  6. orchestrator/db/loaders.py +51 -3
  7. orchestrator/db/models.py +13 -0
  8. orchestrator/db/queries/__init__.py +0 -0
  9. orchestrator/db/queries/subscription.py +85 -0
  10. orchestrator/db/queries/subscription_instance.py +28 -0
  11. orchestrator/domain/base.py +162 -44
  12. orchestrator/domain/context_cache.py +62 -0
  13. orchestrator/domain/helpers.py +41 -1
  14. orchestrator/domain/subscription_instance_transform.py +114 -0
  15. orchestrator/graphql/resolvers/process.py +3 -3
  16. orchestrator/graphql/resolvers/product.py +2 -2
  17. orchestrator/graphql/resolvers/product_block.py +2 -2
  18. orchestrator/graphql/resolvers/resource_type.py +2 -2
  19. orchestrator/graphql/resolvers/workflow.py +2 -2
  20. orchestrator/graphql/utils/get_query_loaders.py +6 -48
  21. orchestrator/graphql/utils/get_subscription_product_blocks.py +8 -1
  22. orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +33 -0
  23. orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +40 -0
  24. orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +44 -0
  25. orchestrator/services/processes.py +28 -9
  26. orchestrator/services/subscriptions.py +36 -6
  27. orchestrator/settings.py +3 -0
  28. orchestrator/utils/functional.py +9 -0
  29. orchestrator/utils/redis.py +6 -0
  30. orchestrator/workflow.py +29 -6
  31. orchestrator/workflows/utils.py +40 -5
  32. {orchestrator_core-3.1.2rc4.dist-info → orchestrator_core-3.2.0.dist-info}/METADATA +9 -8
  33. {orchestrator_core-3.1.2rc4.dist-info → orchestrator_core-3.2.0.dist-info}/RECORD +36 -28
  34. /orchestrator/migrations/versions/schema/{2025-10-19_4fjdn13f83ga_add_validate_product_type_task.py → 2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py} +0 -0
  35. {orchestrator_core-3.1.2rc4.dist-info → orchestrator_core-3.2.0.dist-info}/WHEEL +0 -0
  36. {orchestrator_core-3.1.2rc4.dist-info → orchestrator_core-3.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- # Copyright 2019-2020 SURF, GÉANT.
1
+ # Copyright 2019-2025 SURF, GÉANT, ESnet.
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
@@ -20,6 +20,7 @@ from more_itertools import first_true
20
20
  from pydantic import field_validator, model_validator
21
21
  from sqlalchemy import select
22
22
 
23
+ from oauth2_lib.fastapi import OIDCUserModel
23
24
  from orchestrator.db import ProductTable, SubscriptionTable, db
24
25
  from orchestrator.forms.validators import ProductId
25
26
  from orchestrator.services import subscriptions
@@ -30,7 +31,7 @@ from orchestrator.utils.errors import StaleDataError
30
31
  from orchestrator.utils.redis import caching_models_enabled
31
32
  from orchestrator.utils.state import form_inject_args
32
33
  from orchestrator.utils.validate_data_version import validate_data_version
33
- from orchestrator.workflow import StepList, Workflow, conditional, done, init, make_workflow, step
34
+ from orchestrator.workflow import Step, StepList, Workflow, begin, conditional, done, init, make_workflow, step
34
35
  from orchestrator.workflows.steps import (
35
36
  cache_domain_models,
36
37
  refresh_subscription_search_index,
@@ -205,6 +206,7 @@ def create_workflow(
205
206
  initial_input_form: InputStepFunc | None = None,
206
207
  status: SubscriptionLifecycle = SubscriptionLifecycle.ACTIVE,
207
208
  additional_steps: StepList | None = None,
209
+ authorize_callback: Callable[[OIDCUserModel | None], bool] | None = None,
208
210
  ) -> Callable[[Callable[[], StepList]], Workflow]:
209
211
  """Transform an initial_input_form and a step list into a workflow with a target=Target.CREATE.
210
212
 
@@ -231,7 +233,14 @@ def create_workflow(
231
233
  >> done
232
234
  )
233
235
 
234
- return make_workflow(f, description, create_initial_input_form_generator, Target.CREATE, steplist)
236
+ return make_workflow(
237
+ f,
238
+ description,
239
+ create_initial_input_form_generator,
240
+ Target.CREATE,
241
+ steplist,
242
+ authorize_callback=authorize_callback,
243
+ )
235
244
 
236
245
  return _create_workflow
237
246
 
@@ -240,6 +249,7 @@ def modify_workflow(
240
249
  description: str,
241
250
  initial_input_form: InputStepFunc | None = None,
242
251
  additional_steps: StepList | None = None,
252
+ authorize_callback: Callable[[OIDCUserModel | None], bool] | None = None,
243
253
  ) -> Callable[[Callable[[], StepList]], Workflow]:
244
254
  """Transform an initial_input_form and a step list into a workflow.
245
255
 
@@ -269,7 +279,14 @@ def modify_workflow(
269
279
  >> done
270
280
  )
271
281
 
272
- return make_workflow(f, description, wrapped_modify_initial_input_form_generator, Target.MODIFY, steplist)
282
+ return make_workflow(
283
+ f,
284
+ description,
285
+ wrapped_modify_initial_input_form_generator,
286
+ Target.MODIFY,
287
+ steplist,
288
+ authorize_callback=authorize_callback,
289
+ )
273
290
 
274
291
  return _modify_workflow
275
292
 
@@ -278,6 +295,7 @@ def terminate_workflow(
278
295
  description: str,
279
296
  initial_input_form: InputStepFunc | None = None,
280
297
  additional_steps: StepList | None = None,
298
+ authorize_callback: Callable[[OIDCUserModel | None], bool] | None = None,
281
299
  ) -> Callable[[Callable[[], StepList]], Workflow]:
282
300
  """Transform an initial_input_form and a step list into a workflow.
283
301
 
@@ -308,7 +326,14 @@ def terminate_workflow(
308
326
  >> done
309
327
  )
310
328
 
311
- return make_workflow(f, description, wrapped_terminate_initial_input_form_generator, Target.TERMINATE, steplist)
329
+ return make_workflow(
330
+ f,
331
+ description,
332
+ wrapped_terminate_initial_input_form_generator,
333
+ Target.TERMINATE,
334
+ steplist,
335
+ authorize_callback=authorize_callback,
336
+ )
312
337
 
313
338
  return _terminate_workflow
314
339
 
@@ -344,6 +369,16 @@ def validate_workflow(description: str) -> Callable[[Callable[[], StepList]], Wo
344
369
  return _validate_workflow
345
370
 
346
371
 
372
+ def ensure_provisioning_status(modify_steps: Step | StepList) -> StepList:
373
+ """Decorator to ensure subscription modifications are executed only during Provisioning status."""
374
+ return (
375
+ begin
376
+ >> set_status(SubscriptionLifecycle.PROVISIONING)
377
+ >> modify_steps
378
+ >> set_status(SubscriptionLifecycle.ACTIVE)
379
+ )
380
+
381
+
347
382
  @step("Equalize workflow step count")
348
383
  def obsolete_step() -> None:
349
384
  """Equalize workflow step counts.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 3.1.2rc4
3
+ Version: 3.2.0
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Requires-Python: >=3.11,<3.14
6
6
  Classifier: Intended Audience :: Information Technology
@@ -28,7 +28,7 @@ Classifier: Programming Language :: Python :: 3.11
28
28
  Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
29
29
  Classifier: Topic :: Internet :: WWW/HTTP
30
30
  License-File: LICENSE
31
- Requires-Dist: alembic==1.15.1
31
+ Requires-Dist: alembic==1.15.2
32
32
  Requires-Dist: anyio>=3.7.0
33
33
  Requires-Dist: click==8.*
34
34
  Requires-Dist: deprecated
@@ -38,17 +38,18 @@ Requires-Dist: fastapi-etag==0.4.0
38
38
  Requires-Dist: more-itertools~=10.6.0
39
39
  Requires-Dist: itsdangerous
40
40
  Requires-Dist: Jinja2==3.1.6
41
- Requires-Dist: orjson==3.10.15
41
+ Requires-Dist: orjson==3.10.16
42
42
  Requires-Dist: psycopg2-binary==2.9.10
43
43
  Requires-Dist: pydantic[email]~=2.8.2
44
44
  Requires-Dist: pydantic-settings~=2.8.0
45
45
  Requires-Dist: python-dateutil==2.8.2
46
46
  Requires-Dist: python-rapidjson>=1.18,<1.21
47
- Requires-Dist: pytz==2025.1
47
+ Requires-Dist: pytz==2025.2
48
48
  Requires-Dist: redis==5.1.1
49
49
  Requires-Dist: schedule==1.1.0
50
- Requires-Dist: sentry-sdk[fastapi]~=2.24.0
51
- Requires-Dist: SQLAlchemy==2.0.39
50
+ Requires-Dist: semver==3.0.4
51
+ Requires-Dist: sentry-sdk[fastapi]~=2.25.1
52
+ Requires-Dist: SQLAlchemy==2.0.40
52
53
  Requires-Dist: SQLAlchemy-Utils==0.41.2
53
54
  Requires-Dist: structlog
54
55
  Requires-Dist: typer==0.15.2
@@ -57,8 +58,8 @@ Requires-Dist: nwa-stdlib~=1.9.0
57
58
  Requires-Dist: oauth2-lib~=2.4.0
58
59
  Requires-Dist: tabulate==0.9.0
59
60
  Requires-Dist: strawberry-graphql>=0.246.2
60
- Requires-Dist: pydantic-forms~=1.4.0
61
- Requires-Dist: celery~=5.4.0 ; extra == "celery"
61
+ Requires-Dist: pydantic-forms>=1.4.0, <=2.0.0
62
+ Requires-Dist: celery~=5.5.1 ; extra == "celery"
62
63
  Requires-Dist: toml ; extra == "dev"
63
64
  Requires-Dist: bumpversion ; extra == "dev"
64
65
  Requires-Dist: mypy_extensions ; extra == "dev"
@@ -1,14 +1,14 @@
1
- orchestrator/__init__.py,sha256=NteTfyhIqQKobRN4YysOJsOk9XCF6I55xT3JTTyztks,1066
1
+ orchestrator/__init__.py,sha256=TCyrSdbf4mhPx4P_xYUldcMYH6uf35NxAd0z2pbXbcE,1063
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
- orchestrator/settings.py,sha256=0vTcgLs007LoyOfRPCIR7lwh-urON3bxj4AtXBkro_8,3864
7
+ orchestrator/settings.py,sha256=MTG7gnmbQYwUjAnhvX4Y3MEqmX8vIpAEC0lhDafa1zw,4039
8
8
  orchestrator/targets.py,sha256=ykjTGK7CozFaltNaxQcK90P4Cc1Qvf-W8dFztxtZhRQ,776
9
9
  orchestrator/types.py,sha256=qzs7xx5AYRmKbpYRyJJP3wuDb0W0bcAzefCN0RWLAco,15459
10
10
  orchestrator/version.py,sha256=b58e08lxs47wUNXv0jXFO_ykpksmytuzEXD4La4W-NQ,1366
11
- orchestrator/workflow.py,sha256=PCeJyCdcze2hWyEZQKLi0-1AadLXHr8CtMXJBZLGD3M,43125
11
+ orchestrator/workflow.py,sha256=T_3Z1PrlF70C16ehAthKRF1hd3jpwV-MREDVxSLfxOw,44063
12
12
  orchestrator/api/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
13
13
  orchestrator/api/error_handling.py,sha256=YrPCxSa-DSa9KwqIMlXI-KGBGnbGIW5ukOPiikUH9E4,1502
14
14
  orchestrator/api/helpers.py,sha256=s0QRHYw8AvEmlkmRhuEzz9xixaZKUF3YuPzUVHkcoXk,6933
@@ -17,7 +17,7 @@ orchestrator/api/api_v1/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n
17
17
  orchestrator/api/api_v1/api.py,sha256=m4iDktsSpzxUDaudkdgXeZ83a6B4wfc3pczQsa-Pb-8,2866
18
18
  orchestrator/api/api_v1/endpoints/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
19
19
  orchestrator/api/api_v1/endpoints/health.py,sha256=iaxs1XX1_250_gKNsspuULCV2GEMBjbtjsmfQTOvMAI,1284
20
- orchestrator/api/api_v1/endpoints/processes.py,sha256=OHKY4phU5ica0PhewTS3kvCtybYfFsvQ6Vhgl0_qX2I,13489
20
+ orchestrator/api/api_v1/endpoints/processes.py,sha256=UDYr7c9ypY_GS3jL_6vL1sRpTDCCSRyBa0XkgRVGZJs,13570
21
21
  orchestrator/api/api_v1/endpoints/product_blocks.py,sha256=kZ6ywIOsS_S2qGq7RvZ4KzjvaS1LmwbGWR37AKRvWOw,2146
22
22
  orchestrator/api/api_v1/endpoints/products.py,sha256=BfFtwu9dZXEQbtKxYj9icc73GKGvAGMR5ytyf41nQlQ,3081
23
23
  orchestrator/api/api_v1/endpoints/resource_types.py,sha256=gGyuaDyOD0TAVoeFGaGmjDGnQ8eQQArOxKrrk4MaDzA,2145
@@ -65,7 +65,7 @@ orchestrator/cli/generator/generator/settings.py,sha256=_IhRnQ7bpGjqYtFo-OiLky25
65
65
  orchestrator/cli/generator/generator/translations.py,sha256=ip0RghW2bY7CoemEab9SxSgjizI44G35AoNHuBsgvrU,1878
66
66
  orchestrator/cli/generator/generator/unittest.py,sha256=cLbPRjBQyKFLDNABoTR3WQ21EisAodHs5Q3EGx4VQ6c,4541
67
67
  orchestrator/cli/generator/generator/validations.py,sha256=yLv_S_ZBOc_z5DNjz4JY50A4ErWeOk8rk5orty9hwbM,1815
68
- orchestrator/cli/generator/generator/workflow.py,sha256=IHjF4XSlfveQlwWZqoQne6Y7tua4-QdqaR_UV4HhLDc,7968
68
+ orchestrator/cli/generator/generator/workflow.py,sha256=8mkb0a2zisb6iUFq8ICrOm2D3I_6fxxrit_LPxViSzk,8406
69
69
  orchestrator/cli/generator/products/workshop/circuit.yaml,sha256=AyRUWj61GUBoW9k9z1yfn9vZYXy52PiDMOayAr_FUdE,759
70
70
  orchestrator/cli/generator/products/workshop/node.yaml,sha256=4498iAjH6wHQAiRqsvczpgjJnyO8iCLokT6MgKwlxXQ,538
71
71
  orchestrator/cli/generator/products/workshop/user.yaml,sha256=92VrWlU1-C6KI8iONO-LGWt-U45rbZpCxhzF2Ags3iw,532
@@ -82,7 +82,7 @@ orchestrator/cli/generator/templates/enums.j2,sha256=pmx7_DeoE4X9u83_In18C97XqZP
82
82
  orchestrator/cli/generator/templates/lazy_workflow_instance.j2,sha256=BYB6LwE19OarY7_7Ovej5rqppZWtjiDkG7TDK5dYU7Y,523
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
- orchestrator/cli/generator/templates/modify_product.j2,sha256=we2TqyHD5L8dprnOitmwBT8MU7PzVG8iMrzdxXquDfM,4751
85
+ orchestrator/cli/generator/templates/modify_product.j2,sha256=M1WDMmPwfXpUcuZUa-H5GnlKAr1t_xCQliLa66FI-YU,5057
86
86
  orchestrator/cli/generator/templates/new_product_migration.j2,sha256=d67I9haNkKdzWzNT0f1S6-UhG86fOWEohF0Al7NmXmA,3023
87
87
  orchestrator/cli/generator/templates/product.j2,sha256=gcN1poWRuGWbsLrQv0Z8SXO6MGuXBHBr33UvQtqsF8E,1241
88
88
  orchestrator/cli/generator/templates/product_block.j2,sha256=X5ynyBG39UiYekPHms7IkSHmxq2j-2OrhAYsFaRqktU,2454
@@ -101,12 +101,12 @@ orchestrator/cli/helpers/input_helpers.py,sha256=pv5GTMuIWLzBE_bKNhn1XD_gxoqB0s1
101
101
  orchestrator/cli/helpers/print_helpers.py,sha256=b3ePg6HfBLKPYBBVr5XOA__JnFEMI5HBjbjov3CP8Po,859
102
102
  orchestrator/config/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
103
103
  orchestrator/config/assignee.py,sha256=9mFFe9hoi2NCkXFOKL2pU2aveBzcZhljSvqUnh55vrk,780
104
- orchestrator/db/__init__.py,sha256=6yC3HSSIgHgfLvGpYE-j8ENr8A2urJxjxUEiZ0C7JJY,3454
104
+ orchestrator/db/__init__.py,sha256=41_v-oeX5SMnwH2uIeBzscoST3FRXdpkEFDE5AoQR1E,3498
105
105
  orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,10269
106
106
  orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
107
107
  orchestrator/db/listeners.py,sha256=UBPYcH0FE3a7aZQu_D0O_JMXpXIRYXC0gjSAvlv5GZo,1142
108
- orchestrator/db/loaders.py,sha256=escBOUNf5bHmjIuNH37fGgNSeZLzMiJvQgQFy4r4MYY,6244
109
- orchestrator/db/models.py,sha256=cMoPkAhr3Hg7VsXgO0LFiIUAudL2KEv21qjcHu940nA,26870
108
+ orchestrator/db/loaders.py,sha256=ez6JzQ3IKVkC_oLAkVlIIiI8Do7hXbdcPKCvUSLxRog,7962
109
+ orchestrator/db/models.py,sha256=V7m-XOVzo_Kj_B-M46Ybr1zlbfXjbN64sQ3C-rz7PQE,27217
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
@@ -117,6 +117,9 @@ orchestrator/db/filters/subscription.py,sha256=IV7ur7yyKFNUQRx0gZPelcMLHjuUPU0Rx
117
117
  orchestrator/db/filters/workflow.py,sha256=osyyEmOFuev6q5lizHeUvgxf1Nji3fZtlbf2_lzSNao,1276
118
118
  orchestrator/db/filters/search_filters/__init__.py,sha256=a7yfEAA-qpD_PHZH5LeqSjrLeGAvQrDsJp7mzVwDMwo,562
119
119
  orchestrator/db/filters/search_filters/inferred_filter.py,sha256=LTRrcLY7hTu8Dr18-xLVMdge9_MNCvtfcCH0CbaJc2Y,5711
120
+ orchestrator/db/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ orchestrator/db/queries/subscription.py,sha256=JCL91QfBpr1WlJUhrYMZJKeZMx8yFy9p8GVnrqTs7hI,3587
122
+ orchestrator/db/queries/subscription_instance.py,sha256=zYK3qFDHlm72o3GBdVfSUY16l_hGLc-ia5ROHPlNWfQ,1178
120
123
  orchestrator/db/range/__init__.py,sha256=mAOCJrQLMMeks0zTK5resf5t-01GrlFN8nIT1gNbqEQ,162
121
124
  orchestrator/db/range/range.py,sha256=sOSzkRqvLXvoTYxOd_Q0OWQ9lSqrXTnwXh4DVLGGSK0,2175
122
125
  orchestrator/db/sorting/__init__.py,sha256=d33YUS6uAI75l35Mpb-GB9t9sd03jCxq0V-kLmijVOc,353
@@ -139,10 +142,12 @@ orchestrator/distlock/managers/__init__.py,sha256=ImIkNsrXcyE7-NgRWqEhUXUuUzda9K
139
142
  orchestrator/distlock/managers/memory_distlock_manager.py,sha256=HWQafcVKBF-Cka_wukZZ1GM69AWPVOpJPje3quIebQ8,3114
140
143
  orchestrator/distlock/managers/redis_distlock_manager.py,sha256=DXtMhC8qtxiFO6xU9qYXHZQnCLjlmGBpeyfLA0vbRP0,3369
141
144
  orchestrator/domain/__init__.py,sha256=20DhXQPKY0g3rTgCkRlNDY58sLviToOVF8NPoex9WJc,936
142
- orchestrator/domain/base.py,sha256=HfSd6XPvAwHKt7ONWCaE2Zzqhb0gOLqigXxi1QuvlDE,64883
145
+ orchestrator/domain/base.py,sha256=26UbHKXqI99w8SyS-Kjj4DF8IbgPNOh8iDPP6e3GEsA,70996
146
+ orchestrator/domain/context_cache.py,sha256=eIOP0xESBdNSPw3DMWxxSOzpUzVVgnMMyMhGkl99-Xc,2228
143
147
  orchestrator/domain/customer_description.py,sha256=v7o6TTN4oc6bWHZU-jCT-fUYvkeYahbpXOwlKXofuI8,3360
144
- orchestrator/domain/helpers.py,sha256=2j2j_7J8qvniHxxpdoEQsoVpC-llkn0tbww2eCA0K1A,989
148
+ orchestrator/domain/helpers.py,sha256=D9O2duhCAZGmm39u-9ggvU-X2JsCbIS607kF77-r8QM,2549
145
149
  orchestrator/domain/lifecycle.py,sha256=kGR0AFVOSUBlzdhgRr11CUnF26wbBYIjz8uKb_qPCg0,2922
150
+ orchestrator/domain/subscription_instance_transform.py,sha256=j_d49dFcSss0dl-BHS-ev2faLbE0y8hLvCfrzui6C74,4360
146
151
  orchestrator/forms/__init__.py,sha256=bw_1238HKy_T0gvfA5oEjJFwkALzvWU4O_VJ0xE8UyU,1168
147
152
  orchestrator/forms/validators/__init__.py,sha256=2T7w429dQhChsAbnQDeyp2BrM_iKj6-nkNrz27RZatY,1906
148
153
  orchestrator/forms/validators/customer_contact_list.py,sha256=61A7FpXBjWhurIAGzJcLVlZSWajm41QWgFZP-rUT_5o,1508
@@ -164,14 +169,14 @@ orchestrator/graphql/mutations/start_process.py,sha256=8vLVvmBwL1ujbZJoI_8YE3VAg
164
169
  orchestrator/graphql/resolvers/__init__.py,sha256=EEw9NO4LAryfrpkLlgsNQ9rytKd0usBDx95OURRV6sg,1031
165
170
  orchestrator/graphql/resolvers/customer.py,sha256=tq06MtMoaqFwqn3YQvSv0VmROW7QJZRJp1ykO4tUhck,934
166
171
  orchestrator/graphql/resolvers/helpers.py,sha256=8NeuiJD9CPus4BhRK9nDsSMhb2LhW1W7nrEpyj_J3M4,771
167
- orchestrator/graphql/resolvers/process.py,sha256=8UQaw3Mqjwubq_V7iW4O2KsFpqlPKLyXkPRVNS9eKec,4965
168
- orchestrator/graphql/resolvers/product.py,sha256=PQCurvc2NVk5sspdzHUrpcDgEmn7i0wA-jvqpvCMkqk,2742
169
- orchestrator/graphql/resolvers/product_block.py,sha256=BAYW66KT_1mozNidfBxBI7l3_e8-ozC0g2qv3NLniqE,2909
170
- orchestrator/graphql/resolvers/resource_type.py,sha256=NRDKPFqwktOvVLLm2QCLxVPwzXIYEMJKUN3DS_kS49o,2926
172
+ orchestrator/graphql/resolvers/process.py,sha256=Hqs1F7-gw0yO_ioHjh2eLAyxrK2WSuL3VJ0y2ouNcLA,5010
173
+ orchestrator/graphql/resolvers/product.py,sha256=uPBmYwMdau-zUqNjoDl-LDn927u3aCFW5JQ4A_it8q0,2772
174
+ orchestrator/graphql/resolvers/product_block.py,sha256=Ker1CpxGab5h2BZujOHHwRUj8W4uphRr3WSpQGk2PnI,2939
175
+ orchestrator/graphql/resolvers/resource_type.py,sha256=SREZXjkLYpuo4nCM8DqVeImIrZcP3xDiWr_gq4wWaxQ,2956
171
176
  orchestrator/graphql/resolvers/settings.py,sha256=xVYqxo-EWQ24F4hUHm9OZeN9vsqQXJzIJ1_HF4Ci9Cs,3777
172
177
  orchestrator/graphql/resolvers/subscription.py,sha256=57niFv-JCro_wm0peJ5Ne04F2WIPuJ-Lx2h8yd9qubA,6541
173
178
  orchestrator/graphql/resolvers/version.py,sha256=qgwe1msPOexeg3RHCscJ8s45vNfMhYh9ZKyCZ3MNw30,809
174
- orchestrator/graphql/resolvers/workflow.py,sha256=YUwPklwYesgmRS4d0eIQdgVmkyhgGbkQZ9uC1Oe8EyA,2776
179
+ orchestrator/graphql/resolvers/workflow.py,sha256=RKN-mI9Rg_4vVURXr943AHaftM6G3vpcRdeGgwy-uoc,2806
175
180
  orchestrator/graphql/schemas/__init__.py,sha256=dWG4DNzWq5akQ3v5tSAvT03HLxPWXa09Gx8rTz_MHmk,940
176
181
  orchestrator/graphql/schemas/customer.py,sha256=ZptVFG0qauZaoy29KDrh6k5xAnacNCTavmQrZMH8czc,147
177
182
  orchestrator/graphql/schemas/customer_description.py,sha256=fize71IMpkvk_rTzcqCYxazR5WBI652ZZ3eGvd8QqhQ,213
@@ -189,10 +194,10 @@ orchestrator/graphql/schemas/version.py,sha256=HSzVg_y4Sjd5_H5rRUtu3FJKOG_8ifhvB
189
194
  orchestrator/graphql/schemas/workflow.py,sha256=0UWU0HGTiAC_5Wzh16clBd74JoYHrr38YIGV86q-si0,1276
190
195
  orchestrator/graphql/utils/__init__.py,sha256=1JvenzEVW1CBa1sGVI9I8IWnnoXIkb1hneDqph9EEZY,524
191
196
  orchestrator/graphql/utils/create_resolver_error_handler.py,sha256=PpQMVwGrE9t0nZ12TwoxPxksXxEwQM7lSNPeh7qW3vk,1233
192
- orchestrator/graphql/utils/get_query_loaders.py,sha256=NJCxa2vvl66bC-4ts099DPX9vwFkU6cerqICLmZntL0,2258
197
+ orchestrator/graphql/utils/get_query_loaders.py,sha256=abS_HJ7K9een78gMiGq3IhwGwxQXHvZygExe0h_t9ns,815
193
198
  orchestrator/graphql/utils/get_selected_fields.py,sha256=0hBcQkU-7TNVO_KG-MmLItKm0O3gmbqoxXNkLHO-wHo,1002
194
199
  orchestrator/graphql/utils/get_selected_paths.py,sha256=H0btESeOr3_VB7zy5Cx25OS0uzBcg2Y1I-arAmSOnsQ,1382
195
- orchestrator/graphql/utils/get_subscription_product_blocks.py,sha256=nv-PQobDeGw4EcSiiIwGKJotiSEvWECRqpJ25x0qS_k,4774
200
+ orchestrator/graphql/utils/get_subscription_product_blocks.py,sha256=U_WJfi1GWTIK373q8qLVPfYD1zhso-TjyMk3awizx3A,4818
196
201
  orchestrator/graphql/utils/is_query_detailed.py,sha256=ESQiM8OyhGF5vEE__cLV61oEIfnFvznoNCxi02rMTsE,2156
197
202
  orchestrator/graphql/utils/override_class.py,sha256=blwPXVHxLyXQga3KjiDzWozmMhHEWNrhLL_GDmoj6y0,1373
198
203
  orchestrator/graphql/utils/to_graphql_result_page.py,sha256=8ObkJP8reVf-TQOQVPKv1mNdfmSEMS1sG7s_-T7-pUU,902
@@ -223,8 +228,11 @@ orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_
223
228
  orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py,sha256=GzHBzOwOc6FaO1kYwoSNIhb8sKstXo8Cfxdqy3Rmeg4,972
224
229
  orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql,sha256=mhPnqjG5H3W8_BD7w5tYzXUQSxFOM7Rahn_MudEPTIE,5383
225
230
  orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py,sha256=xAhe74U0ZiVRo9Z8Uq7491RBbATMMUnYpTBjbG-BYL0,1690
231
+ orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py,sha256=O0GfCISIDnyohGf3Ot_2HKedGRbMqLVox6t7Wd3PMvo,894
226
232
  orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py,sha256=0vBDGltmOs_gcTTYlWBNOgItzqCXm8qqT02jZfTpL5c,1753
227
- orchestrator/migrations/versions/schema/2025-10-19_4fjdn13f83ga_add_validate_product_type_task.py,sha256=O0GfCISIDnyohGf3Ot_2HKedGRbMqLVox6t7Wd3PMvo,894
233
+ orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py,sha256=jtwDFOh-NlE31aH5dFmbynb23TZN6Mkzevxx-KLP7KE,776
234
+ orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql,sha256=hPldk0DAesUbHv3Qd_N7U-cAk-t1wIgxt4FOA120gQ8,1776
235
+ orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py,sha256=6kHRNSZxUze2jy7b8uRvkt5mzsax10Z-Z3lsACtPLRM,1067
228
236
  orchestrator/schedules/__init__.py,sha256=JnnaglfK1qYUBKI6Dd9taV-tCZIPlAdAkHtnkJDMXxY,1066
229
237
  orchestrator/schedules/resume_workflows.py,sha256=kSotzTAXjX7p9fpSYiGOpuxuTQfv54eRFAe0YSG0DHc,832
230
238
  orchestrator/schedules/scheduling.py,sha256=ehtwgpbvMOk1jhn-hHgVzg_9wLJkI6l3mRY3DcO9ZVY,1526
@@ -248,12 +256,12 @@ orchestrator/services/celery.py,sha256=W37UNc4hbUS2SKjVmawsnF5wukmEfIdipsTESv_EO
248
256
  orchestrator/services/fixed_inputs.py,sha256=kyz7s2HLzyDulvcq-ZqefTw1om86COvyvTjz0_5CmgI,876
249
257
  orchestrator/services/input_state.py,sha256=HF7wl9fWdaAW8pdCCqbuYoKyNj8dY0g8Ff8vXis8z5A,2211
250
258
  orchestrator/services/process_broadcast_thread.py,sha256=D44YbjF8mRqGuznkRUV4SoRn1J0lfy_x1H508GnSVlU,4649
251
- orchestrator/services/processes.py,sha256=eccgO84o-FVRgmL4QaJhQByjoxUhni-VOMo1UQRBYic,29413
259
+ orchestrator/services/processes.py,sha256=8-2qPGil8G8b8UU49H_ty1nGbCAWNPK2raDgRkgXtP0,30586
252
260
  orchestrator/services/products.py,sha256=BP4KyE8zO-8z7Trrs5T6zKBOw53S9BfBJnHWI3p6u5Y,1943
253
261
  orchestrator/services/resource_types.py,sha256=_QBy_JOW_X3aSTqH0CuLrq4zBJL0p7Q-UDJUcuK2_qc,884
254
262
  orchestrator/services/settings.py,sha256=u-834F4KWloXS8zi7R9mp-D3cjl-rbVjKJRU35IqhXo,2723
255
263
  orchestrator/services/subscription_relations.py,sha256=9C126TUfFvyBe7y4x007kH_dvxJ9pZ1zSnaWeH6HC5k,12261
256
- orchestrator/services/subscriptions.py,sha256=65_SLjr_TRyCynWO2Db3Xb_ufbgT-s_UDphl7ICuwSM,26217
264
+ orchestrator/services/subscriptions.py,sha256=Mb1GvtpU5QQkyxB4leh5xMkbuBdKWr-CVNNbHyUj5qE,27845
257
265
  orchestrator/services/tasks.py,sha256=NjPkuauQoh9UJDcjA7OcKFgPk0i6NoKdDO7HlpGbBJ8,6575
258
266
  orchestrator/services/translations.py,sha256=GyP8soUFGej8AS8uulBsk10CCK6Kwfjv9AHMFm3ElQY,1713
259
267
  orchestrator/services/workflows.py,sha256=oH7klit4kv2NGo-BACWA0ZtajVMSJAxG5m-kM6TXIMI,3742
@@ -265,12 +273,12 @@ orchestrator/utils/docs.py,sha256=GbyD61oKn1yVYaphUKHCBvrWEWJDTQfRc_VEbVb-zgU,61
265
273
  orchestrator/utils/enrich_process.py,sha256=o_QSy5Q4wn1SMHhzVOw6bp7uhDXr7GhAIWRDDMWUVO4,4699
266
274
  orchestrator/utils/errors.py,sha256=6FxvXrITmRjP5bYnJJ3CxjAwA5meNjRAVYouz4TWKkU,4653
267
275
  orchestrator/utils/fixed_inputs.py,sha256=pnL6I_19VMp_Bny8SYjSzVFNvTFDyeCxFFOWGhTnDiQ,2665
268
- orchestrator/utils/functional.py,sha256=w_iqB8zppLMnUaioyRjsZAAYC4y5kLw3zih5NKkEFoM,8063
276
+ orchestrator/utils/functional.py,sha256=X1MDNwHmkU3-8mFb21m31HGlcfc5TygliXR0sXN3-rU,8304
269
277
  orchestrator/utils/get_subscription_dict.py,sha256=fkgDM54hn5YGUP9_2MOcJApJK1Z6c_Rl6sJERsrOy6M,686
270
278
  orchestrator/utils/get_updated_properties.py,sha256=egVZ0R5LNJ4e51Z8SXlU8cmb4tXxG-xb1d7OKwh-7xI,1322
271
279
  orchestrator/utils/helpers.py,sha256=NjUF3IvWdnLulliP8-JQvGGGpHrh0vs0Vm092ynw-ss,3212
272
280
  orchestrator/utils/json.py,sha256=7386sdqkrKYyy4sbn5NscwctH_v1hLyw5172P__rU3g,8341
273
- orchestrator/utils/redis.py,sha256=E2vrMO3uQHb4nJENgA3WnpB0iw2C615YMuaWT-4gqoI,7027
281
+ orchestrator/utils/redis.py,sha256=AGWVPt83fjRz0If0PLMlEshUYiDaJXKJdiocIr5__1s,7300
274
282
  orchestrator/utils/redis_client.py,sha256=9rhsvedjK_CyClAjUicQyge0mVIViATqKFGZyjBY3XA,1384
275
283
  orchestrator/utils/search_query.py,sha256=ji5LHtrzohGz6b1IG41cnPdpWXzLEzz4SGWgHly_yfU,16205
276
284
  orchestrator/utils/state.py,sha256=RYKVlvKDBfsBdDk9wHjZKBTlQJbV4SqtCotAlTA2-bI,14021
@@ -284,14 +292,14 @@ orchestrator/workflows/__init__.py,sha256=NzIGGI-8SNAwCk2YqH6sHhEWbgAY457ntDwjO1
284
292
  orchestrator/workflows/modify_note.py,sha256=X70qQtC0ITp5IE5OR8j5Op57k3ol1S9txnhDbZTICao,2416
285
293
  orchestrator/workflows/removed_workflow.py,sha256=V0Da5TEdfLdZZKD38ig-MTp3_IuE7VGqzHHzvPYQmLI,909
286
294
  orchestrator/workflows/steps.py,sha256=yAb6XZaRhR2mKV4_yo-4hSYMTknbMD27-pNGMfjVzi0,9802
287
- orchestrator/workflows/utils.py,sha256=pnpswomdpBKQz9KiklXRbgeG2HBHo-m6ZuPMkaeTriM,13533
295
+ orchestrator/workflows/utils.py,sha256=fLayx_oggM8PdYnyukHSJE3R9u-X2zYY1WRMCELUY74,14545
288
296
  orchestrator/workflows/tasks/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
289
297
  orchestrator/workflows/tasks/cleanup_tasks_log.py,sha256=BfWYbPXhnLAHUJ0mlODDnjZnQQAvKCZJDVTwbwOWI04,1624
290
298
  orchestrator/workflows/tasks/resume_workflows.py,sha256=MzJqlSXUvKStkT7NGzxZyRlfAer_ezYm-kjUqaZi0yc,2359
291
299
  orchestrator/workflows/tasks/validate_product_type.py,sha256=UVX_6Kh8ueQs8ujLawnKVDdNc8UhWp_u69aNA8okR_w,3184
292
300
  orchestrator/workflows/tasks/validate_products.py,sha256=i6jQME9N8sZZWo4pkNOS1Zgwh3eB2w66DnJi9k93yNk,8521
293
301
  orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
294
- orchestrator_core-3.1.2rc4.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
295
- orchestrator_core-3.1.2rc4.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
296
- orchestrator_core-3.1.2rc4.dist-info/METADATA,sha256=nkpFSS7JcEKQbHpjU4r0MTn2_1pwtwsG5KBZFG_HgEM,4994
297
- orchestrator_core-3.1.2rc4.dist-info/RECORD,,
302
+ orchestrator_core-3.2.0.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
303
+ orchestrator_core-3.2.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
304
+ orchestrator_core-3.2.0.dist-info/METADATA,sha256=pbmOC-Bx7W_ZmBMIZ3iMd6UmxGZmWyIkMnx60mA8CgI,5029
305
+ orchestrator_core-3.2.0.dist-info/RECORD,,