zenml-nightly 0.62.0.dev20240729__py3-none-any.whl → 0.64.0.dev20240809__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.
- README.md +2 -2
- RELEASE_NOTES.md +120 -0
- zenml/VERSION +1 -1
- zenml/__init__.py +0 -4
- zenml/actions/pipeline_run/pipeline_run_action.py +19 -17
- zenml/analytics/enums.py +4 -6
- zenml/cli/__init__.py +28 -76
- zenml/cli/base.py +2 -2
- zenml/cli/pipeline.py +54 -61
- zenml/cli/stack.py +6 -8
- zenml/cli/web_login.py +8 -0
- zenml/client.py +232 -103
- zenml/config/build_configuration.py +43 -17
- zenml/config/compiler.py +14 -22
- zenml/config/docker_settings.py +80 -57
- zenml/config/pipeline_run_configuration.py +3 -0
- zenml/config/server_config.py +3 -0
- zenml/config/source.py +60 -1
- zenml/constants.py +11 -2
- zenml/entrypoints/base_entrypoint_configuration.py +53 -8
- zenml/enums.py +4 -1
- zenml/environment.py +25 -9
- zenml/image_builders/base_image_builder.py +1 -1
- zenml/image_builders/build_context.py +25 -72
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +13 -4
- zenml/integrations/azure/__init__.py +4 -0
- zenml/integrations/azure/flavors/__init__.py +11 -0
- zenml/integrations/azure/flavors/azureml_orchestrator_flavor.py +263 -0
- zenml/{_hub → integrations/azure/orchestrators}/__init__.py +7 -2
- zenml/integrations/azure/orchestrators/azureml_orchestrator.py +544 -0
- zenml/integrations/azure/orchestrators/azureml_orchestrator_entrypoint_config.py +86 -0
- zenml/integrations/azure/step_operators/azureml_step_operator.py +3 -0
- zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +20 -2
- zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +19 -13
- zenml/integrations/gcp/orchestrators/vertex_orchestrator.py +7 -2
- zenml/integrations/gcp/service_connectors/gcp_service_connector.py +123 -6
- zenml/integrations/kaniko/image_builders/kaniko_image_builder.py +1 -1
- zenml/integrations/mlflow/__init__.py +1 -1
- zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py +3 -1
- zenml/integrations/mlflow/flavors/mlflow_experiment_tracker_flavor.py +3 -0
- zenml/logger.py +13 -0
- zenml/models/__init__.py +26 -22
- zenml/models/v2/base/filter.py +32 -0
- zenml/models/v2/core/pipeline.py +73 -89
- zenml/models/v2/core/pipeline_build.py +15 -11
- zenml/models/v2/core/pipeline_deployment.py +72 -24
- zenml/models/v2/core/pipeline_run.py +65 -1
- zenml/models/v2/core/run_template.py +393 -0
- zenml/models/v2/core/server_settings.py +12 -0
- zenml/models/v2/core/user.py +0 -21
- zenml/models/v2/misc/server_models.py +7 -1
- zenml/models/v2/misc/stack_deployment.py +5 -0
- zenml/models/v2/misc/user_auth.py +0 -7
- zenml/new/pipelines/build_utils.py +220 -89
- zenml/new/pipelines/code_archive.py +157 -0
- zenml/new/pipelines/pipeline.py +46 -78
- zenml/new/pipelines/run_utils.py +79 -1
- zenml/post_execution/pipeline.py +1 -4
- zenml/service_connectors/service_connector_utils.py +18 -2
- zenml/stack_deployments/aws_stack_deployment.py +32 -8
- zenml/stack_deployments/azure_stack_deployment.py +122 -10
- zenml/stack_deployments/gcp_stack_deployment.py +36 -7
- zenml/stack_deployments/stack_deployment.py +23 -7
- zenml/steps/base_step.py +3 -0
- zenml/steps/utils.py +0 -4
- zenml/utils/archivable.py +149 -0
- zenml/utils/code_utils.py +244 -0
- zenml/utils/notebook_utils.py +122 -0
- zenml/utils/package_utils.py +39 -0
- zenml/utils/pipeline_docker_image_builder.py +3 -96
- zenml/utils/source_utils.py +109 -1
- zenml/zen_server/dashboard/assets/{404-B_YdvmwS.js → 404-CRAA_Lew.js} +1 -1
- zenml/zen_server/dashboard/assets/@radix-BXWm7HOa.js +85 -0
- zenml/zen_server/dashboard/assets/{@react-router-CO-OsFwI.js → @react-router-l3lMcXA2.js} +1 -1
- zenml/zen_server/dashboard/assets/{@reactflow-l_1hUr1S.js → @reactflow-CeVxyqYT.js} +2 -2
- zenml/zen_server/dashboard/assets/{@tanstack-DYiOyJUL.js → @tanstack-FmcYZMuX.js} +4 -4
- zenml/zen_server/dashboard/assets/AlertDialogDropdownItem-ErO9aOgK.js +1 -0
- zenml/zen_server/dashboard/assets/{AwarenessChannel-CFg5iX4Z.js → AwarenessChannel-CLXo5rKM.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-Dvkx_82E.js → CodeSnippet-D0VLxT2A.js} +2 -2
- zenml/zen_server/dashboard/assets/CollapsibleCard-BaUPiVg0.js +1 -0
- zenml/zen_server/dashboard/assets/{Commands-DoN1xrEq.js → Commands-JrcZK-3j.js} +1 -1
- zenml/zen_server/dashboard/assets/CopyButton-Dbo52T1K.js +2 -0
- zenml/zen_server/dashboard/assets/{CsvVizualization-Ck-nZ43m.js → CsvVizualization-D3kAypDj.js} +3 -3
- zenml/zen_server/dashboard/assets/DisplayDate-DizbSeT-.js +1 -0
- zenml/zen_server/dashboard/assets/EditSecretDialog-Bd7mFLS4.js +1 -0
- zenml/zen_server/dashboard/assets/{EmptyState-BMLnFVlB.js → EmptyState-BHblM39I.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-kLtljEOM.js → Error-C6LeJSER.js} +1 -1
- zenml/zen_server/dashboard/assets/{ExecutionStatus-DguLLgTK.js → ExecutionStatus-jH4OrWBq.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-BXUMP21n.js → Helpbox-aAB2XP-z.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-DSt0O-dm.js → Infobox-BQ0aty32.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-xsrsIGE-.js → InlineAvatar-DpTLgM3Q.js} +1 -1
- zenml/zen_server/dashboard/assets/Lock-CNyJvf2r.js +1 -0
- zenml/zen_server/dashboard/assets/{MarkdownVisualization-xp3hhULl.js → MarkdownVisualization-Bajxn0HY.js} +1 -1
- zenml/zen_server/dashboard/assets/NumberBox-BmKE0qnO.js +1 -0
- zenml/zen_server/dashboard/assets/{PasswordChecker-DUveqlva.js → PasswordChecker-yGGoJSB-.js} +1 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-BBqkIuTd.js +1 -0
- zenml/zen_server/dashboard/assets/RadioItem-xLhXoiFV.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-C9R0mdaX.js +1 -0
- zenml/zen_server/dashboard/assets/{SetPassword-BXGTWiwj.js → SetPassword-52sNxNiO.js} +1 -1
- zenml/zen_server/dashboard/assets/{SuccessStep-DZC60t0x.js → SuccessStep-DlkItqYG.js} +1 -1
- zenml/zen_server/dashboard/assets/Tick-uxv80Q6a.js +1 -0
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DGvwFWO1.js → UpdatePasswordSchemas-oN4G3sKz.js} +1 -1
- zenml/zen_server/dashboard/assets/{aws-BgKTfTfx.js → aws-0_3UsPif.js} +1 -1
- zenml/zen_server/dashboard/assets/{check-circle-i56092KI.js → check-circle-1_I207rW.js} +1 -1
- zenml/zen_server/dashboard/assets/chevron-down-BpaF8JqM.js +1 -0
- zenml/zen_server/dashboard/assets/{chevron-right-double-CZBOf6JM.js → chevron-right-double-Dk8e2L99.js} +1 -1
- zenml/zen_server/dashboard/assets/{cloud-only-C_yFCAkP.js → cloud-only-BkUuI0lZ.js} +1 -1
- zenml/zen_server/dashboard/assets/components-Br2ezRib.js +1 -0
- zenml/zen_server/dashboard/assets/{copy-BXNk6BjL.js → copy-f3XGPPxt.js} +1 -1
- zenml/zen_server/dashboard/assets/{database-1xWSgZfO.js → database-cXYNX9tt.js} +1 -1
- zenml/zen_server/dashboard/assets/{docker-CQMVm_4d.js → docker-8uj__HHK.js} +1 -1
- zenml/zen_server/dashboard/assets/dots-horizontal-sKQlWEni.js +1 -0
- zenml/zen_server/dashboard/assets/edit-C0MVvPD2.js +1 -0
- zenml/zen_server/dashboard/assets/{file-text-CqD_iu6l.js → file-text-B9JibxTs.js} +1 -1
- zenml/zen_server/dashboard/assets/{help-bu_DgLKI.js → help-FuHlZwn0.js} +1 -1
- zenml/zen_server/dashboard/assets/{index-rK_Wuy2W.js → index-Bd1xgUQG.js} +1 -1
- zenml/zen_server/dashboard/assets/index-DaGknux4.css +1 -0
- zenml/zen_server/dashboard/assets/{index-BczVOqUf.js → index-DhIZtpxB.js} +5 -5
- zenml/zen_server/dashboard/assets/index.esm-DT4uyn2i.js +1 -0
- zenml/zen_server/dashboard/assets/layout-D6oiSbfd.js +1 -0
- zenml/zen_server/dashboard/assets/{login-mutation-CrHrndTI.js → login-mutation-13A_JSVA.js} +1 -1
- zenml/zen_server/dashboard/assets/{logs-D8k8BVFf.js → logs-CgeE2vZP.js} +1 -1
- zenml/zen_server/dashboard/assets/{not-found-DYa4pC-C.js → not-found-B0Mmb90p.js} +1 -1
- zenml/zen_server/dashboard/assets/package-DdkziX79.js +1 -0
- zenml/zen_server/dashboard/assets/page-7-v2OBm-.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MFQyIJd3.js → page-B3ozwdD1.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BkuQDIf-.js → page-BGwA9B1M.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-1iL8aMqs.js → page-BkjAUyTA.js} +1 -1
- zenml/zen_server/dashboard/assets/page-BnacgBiy.js +1 -0
- zenml/zen_server/dashboard/assets/page-BxF_KMQ3.js +2 -0
- zenml/zen_server/dashboard/assets/page-C4POHC0K.js +1 -0
- zenml/zen_server/dashboard/assets/page-C9kudd44.js +9 -0
- zenml/zen_server/dashboard/assets/page-CA1j3GpJ.js +1 -0
- zenml/zen_server/dashboard/assets/page-CCY6yfmu.js +1 -0
- zenml/zen_server/dashboard/assets/page-CgTe7Bme.js +1 -0
- zenml/zen_server/dashboard/assets/{page-8a4UMKXZ.js → page-Cgn-6v2Y.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CxQmQqDw.js +1 -0
- zenml/zen_server/dashboard/assets/page-D2Goey3H.js +1 -0
- zenml/zen_server/dashboard/assets/page-DLpOnf7u.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BhgCDInH.js → page-DSTQnBk-.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-1h_sD1jz.js → page-DTysUGOy.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-2grKx_MY.js → page-D_EXUFJb.js} +1 -1
- zenml/zen_server/dashboard/assets/page-Db15QzsM.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BDns21Iz.js → page-DugsjcQ_.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-C6-UGEbH.js → page-OFKSPyN7.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BkeAAYwp.js → page-RnG-qhv9.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-CCNRIt_f.js → page-T2BtjwPl.js} +1 -1
- zenml/zen_server/dashboard/assets/page-TXe1Eo3Z.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BnaevhnB.js → page-YiF_fNbe.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-uA5prJGY.js → page-hQaiQXfg.js} +1 -1
- zenml/zen_server/dashboard/assets/persist-3-5nOJ6m.js +1 -0
- zenml/zen_server/dashboard/assets/{play-circle-CNtZKDnW.js → play-circle-XSkLR12B.js} +1 -1
- zenml/zen_server/dashboard/assets/plus-FB9-lEq_.js +1 -0
- zenml/zen_server/dashboard/assets/refresh-COb6KYDi.js +1 -0
- zenml/zen_server/dashboard/assets/sharedSchema-BoYx_B_L.js +14 -0
- zenml/zen_server/dashboard/assets/{stack-detail-query-Cficsl6d.js → stack-detail-query-B-US_-wa.js} +1 -1
- zenml/zen_server/dashboard/assets/{terminal-By9cErXc.js → terminal-grtjrIEJ.js} +1 -1
- zenml/zen_server/dashboard/assets/trash-Cd5CSFqA.js +1 -0
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-7d8xi1tS.js → update-server-settings-mutation-B8GB_ubU.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-D7mAQGUM.js → url-hcMJkz8p.js} +1 -1
- zenml/zen_server/dashboard/assets/{zod-BhoGpZ63.js → zod-CnykDKJj.js} +1 -1
- zenml/zen_server/dashboard/index.html +7 -7
- zenml/zen_server/dashboard_legacy/asset-manifest.json +4 -4
- zenml/zen_server/dashboard_legacy/index.html +1 -1
- zenml/zen_server/dashboard_legacy/{precache-manifest.12246c7548e71e2c4438e496360de80c.js → precache-manifest.9c473c96a43298343a7ce1256183123b.js} +4 -4
- zenml/zen_server/dashboard_legacy/service-worker.js +1 -1
- zenml/zen_server/dashboard_legacy/static/js/{main.3b27024b.chunk.js → main.463c90b9.chunk.js} +2 -2
- zenml/zen_server/dashboard_legacy/static/js/{main.3b27024b.chunk.js.map → main.463c90b9.chunk.js.map} +1 -1
- zenml/zen_server/deploy/helm/Chart.yaml +1 -1
- zenml/zen_server/deploy/helm/README.md +2 -2
- zenml/zen_server/rbac/models.py +1 -0
- zenml/zen_server/rbac/utils.py +4 -0
- zenml/zen_server/routers/pipeline_builds_endpoints.py +2 -66
- zenml/zen_server/routers/pipeline_deployments_endpoints.py +2 -53
- zenml/zen_server/routers/pipelines_endpoints.py +1 -74
- zenml/zen_server/routers/run_templates_endpoints.py +212 -0
- zenml/zen_server/routers/stack_deployment_endpoints.py +6 -0
- zenml/zen_server/routers/users_endpoints.py +0 -7
- zenml/zen_server/routers/workspaces_endpoints.py +79 -0
- zenml/zen_server/{pipeline_deployment → template_execution}/runner_entrypoint_configuration.py +1 -8
- zenml/zen_server/{pipeline_deployment → template_execution}/utils.py +214 -92
- zenml/zen_server/utils.py +77 -2
- zenml/zen_server/zen_server_api.py +54 -2
- zenml/zen_stores/base_zen_store.py +7 -1
- zenml/zen_stores/migrations/versions/0.63.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/0.64.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/026d4577b6a0_add_code_path.py +39 -0
- zenml/zen_stores/migrations/versions/3dcc5d20e82f_add_last_user_activity.py +51 -0
- zenml/zen_stores/migrations/versions/7d1919bb1ef0_add_run_templates.py +100 -0
- zenml/zen_stores/migrations/versions/909550c7c4da_remove_user_hub_token.py +36 -0
- zenml/zen_stores/migrations/versions/b59aa68fdb1f_simplify_pipelines.py +139 -0
- zenml/zen_stores/rest_zen_store.py +112 -39
- zenml/zen_stores/schemas/__init__.py +2 -0
- zenml/zen_stores/schemas/pipeline_build_schemas.py +3 -3
- zenml/zen_stores/schemas/pipeline_deployment_schemas.py +32 -2
- zenml/zen_stores/schemas/pipeline_run_schemas.py +29 -3
- zenml/zen_stores/schemas/pipeline_schemas.py +29 -30
- zenml/zen_stores/schemas/run_template_schemas.py +264 -0
- zenml/zen_stores/schemas/server_settings_schemas.py +2 -0
- zenml/zen_stores/schemas/step_run_schemas.py +11 -4
- zenml/zen_stores/schemas/user_schemas.py +0 -2
- zenml/zen_stores/sql_zen_store.py +389 -151
- zenml/zen_stores/template_utils.py +261 -0
- zenml/zen_stores/zen_store_interface.py +93 -20
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/METADATA +3 -3
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/RECORD +211 -184
- zenml/_hub/client.py +0 -289
- zenml/_hub/constants.py +0 -21
- zenml/_hub/utils.py +0 -79
- zenml/cli/hub.py +0 -1116
- zenml/models/v2/core/pipeline_namespace.py +0 -113
- zenml/models/v2/misc/hub_plugin_models.py +0 -79
- zenml/new/pipelines/deserialization_utils.py +0 -292
- zenml/zen_server/dashboard/assets/@radix-CFOkMR_E.js +0 -85
- zenml/zen_server/dashboard/assets/CollapsibleCard-opiuBHHc.js +0 -1
- zenml/zen_server/dashboard/assets/CopyButton-Cr7xYEPb.js +0 -2
- zenml/zen_server/dashboard/assets/DisplayDate-DYgIjlDF.js +0 -1
- zenml/zen_server/dashboard/assets/Pagination-C6X-mifw.js +0 -1
- zenml/zen_server/dashboard/assets/index-EpMIKgrI.css +0 -1
- zenml/zen_server/dashboard/assets/index.esm-Corw4lXQ.js +0 -1
- zenml/zen_server/dashboard/assets/package-B3fWP-Dh.js +0 -1
- zenml/zen_server/dashboard/assets/page-5NCOHOsy.js +0 -1
- zenml/zen_server/dashboard/assets/page-B6h3iaHJ.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bi-wtWiO.js +0 -5
- zenml/zen_server/dashboard/assets/page-Bq0YxkLV.js +0 -1
- zenml/zen_server/dashboard/assets/page-Bs2F4eoD.js +0 -2
- zenml/zen_server/dashboard/assets/page-CHNxpz3n.js +0 -1
- zenml/zen_server/dashboard/assets/page-DgorQFqi.js +0 -1
- zenml/zen_server/dashboard/assets/page-K8ebxVIs.js +0 -1
- zenml/zen_server/dashboard/assets/page-TgCF0P_U.js +0 -1
- zenml/zen_server/dashboard/assets/page-ZnCEe-eK.js +0 -9
- zenml/zen_server/dashboard/assets/persist-D7HJNBWx.js +0 -1
- zenml/zen_server/dashboard/assets/plus-C8WOyCzt.js +0 -1
- zenml/zen_server/dashboard/assets/secrets-video-OBJ6irhH.svg +0 -21
- zenml/zen_server/dashboard/assets/stacks-video-7gfxpAq4.svg +0 -21
- /zenml/zen_server/{pipeline_deployment → template_execution}/__init__.py +0 -0
- /zenml/zen_server/{pipeline_deployment → template_execution}/workload_manager_interface.py +0 -0
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.62.0.dev20240729.dist-info → zenml_nightly-0.64.0.dev20240809.dist-info}/entry_points.txt +0 -0
@@ -20,8 +20,8 @@ ZenML is an open-source MLOps framework designed to help you create robust, main
|
|
20
20
|
To install the ZenML chart directly from Amazon ECR, use the following command:
|
21
21
|
|
22
22
|
```bash
|
23
|
-
# example command for version 0.
|
24
|
-
helm install my-zenml oci://public.ecr.aws/zenml/zenml --version 0.
|
23
|
+
# example command for version 0.64.0
|
24
|
+
helm install my-zenml oci://public.ecr.aws/zenml/zenml --version 0.64.0
|
25
25
|
```
|
26
26
|
|
27
27
|
Note: Ensure you have OCI support enabled in your Helm client and that you are authenticated with Amazon ECR.
|
zenml/zen_server/rbac/models.py
CHANGED
zenml/zen_server/rbac/utils.py
CHANGED
@@ -405,6 +405,7 @@ def get_resource_type_for_model(
|
|
405
405
|
PipelineResponse,
|
406
406
|
PipelineRunResponse,
|
407
407
|
RunMetadataResponse,
|
408
|
+
RunTemplateResponse,
|
408
409
|
SecretResponse,
|
409
410
|
ServiceAccountResponse,
|
410
411
|
ServiceConnectorResponse,
|
@@ -440,6 +441,7 @@ def get_resource_type_for_model(
|
|
440
441
|
PipelineDeploymentResponse: ResourceType.PIPELINE_DEPLOYMENT,
|
441
442
|
PipelineBuildResponse: ResourceType.PIPELINE_BUILD,
|
442
443
|
PipelineRunResponse: ResourceType.PIPELINE_RUN,
|
444
|
+
RunTemplateResponse: ResourceType.RUN_TEMPLATE,
|
443
445
|
TagResponse: ResourceType.TAG,
|
444
446
|
TriggerResponse: ResourceType.TRIGGER,
|
445
447
|
TriggerExecutionResponse: ResourceType.TRIGGER_EXECUTION,
|
@@ -556,6 +558,7 @@ def get_schema_for_resource_type(
|
|
556
558
|
PipelineRunSchema,
|
557
559
|
PipelineSchema,
|
558
560
|
RunMetadataSchema,
|
561
|
+
RunTemplateSchema,
|
559
562
|
SecretSchema,
|
560
563
|
ServiceConnectorSchema,
|
561
564
|
ServiceSchema,
|
@@ -587,6 +590,7 @@ def get_schema_for_resource_type(
|
|
587
590
|
ResourceType.PIPELINE_RUN: PipelineRunSchema,
|
588
591
|
ResourceType.PIPELINE_DEPLOYMENT: PipelineDeploymentSchema,
|
589
592
|
ResourceType.PIPELINE_BUILD: PipelineBuildSchema,
|
593
|
+
ResourceType.RUN_TEMPLATE: RunTemplateSchema,
|
590
594
|
ResourceType.RUN_METADATA: RunMetadataSchema,
|
591
595
|
ResourceType.USER: UserSchema,
|
592
596
|
ResourceType.ACTION: ActionSchema,
|
@@ -13,18 +13,15 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Endpoint definitions for builds."""
|
15
15
|
|
16
|
-
from typing import Optional
|
17
16
|
from uuid import UUID
|
18
17
|
|
19
|
-
from fastapi import APIRouter,
|
18
|
+
from fastapi import APIRouter, Depends, Security
|
20
19
|
|
21
|
-
from zenml.config.pipeline_run_configuration import PipelineRunConfiguration
|
22
20
|
from zenml.constants import API, PIPELINE_BUILDS, VERSION_1
|
23
21
|
from zenml.models import (
|
24
22
|
Page,
|
25
23
|
PipelineBuildFilter,
|
26
24
|
PipelineBuildResponse,
|
27
|
-
PipelineRunResponse,
|
28
25
|
)
|
29
26
|
from zenml.zen_server.auth import AuthContext, authorize
|
30
27
|
from zenml.zen_server.exceptions import error_response
|
@@ -33,12 +30,10 @@ from zenml.zen_server.rbac.endpoint_utils import (
|
|
33
30
|
verify_permissions_and_get_entity,
|
34
31
|
verify_permissions_and_list_entities,
|
35
32
|
)
|
36
|
-
from zenml.zen_server.rbac.models import
|
37
|
-
from zenml.zen_server.rbac.utils import verify_permission
|
33
|
+
from zenml.zen_server.rbac.models import ResourceType
|
38
34
|
from zenml.zen_server.utils import (
|
39
35
|
handle_exceptions,
|
40
36
|
make_dependable,
|
41
|
-
server_config,
|
42
37
|
zen_store,
|
43
38
|
)
|
44
39
|
|
@@ -126,62 +121,3 @@ def delete_build(
|
|
126
121
|
get_method=zen_store().get_build,
|
127
122
|
delete_method=zen_store().delete_build,
|
128
123
|
)
|
129
|
-
|
130
|
-
|
131
|
-
if server_config().workload_manager_enabled:
|
132
|
-
|
133
|
-
@router.post(
|
134
|
-
"/{build_id}/runs",
|
135
|
-
responses={
|
136
|
-
401: error_response,
|
137
|
-
404: error_response,
|
138
|
-
422: error_response,
|
139
|
-
},
|
140
|
-
)
|
141
|
-
@handle_exceptions
|
142
|
-
def run_build(
|
143
|
-
build_id: UUID,
|
144
|
-
background_tasks: BackgroundTasks,
|
145
|
-
config: Optional[PipelineRunConfiguration] = None,
|
146
|
-
auth_context: AuthContext = Security(authorize),
|
147
|
-
) -> PipelineRunResponse:
|
148
|
-
"""Run a pipeline from a pipeline build.
|
149
|
-
|
150
|
-
Args:
|
151
|
-
build_id: The ID of the build.
|
152
|
-
background_tasks: Background tasks.
|
153
|
-
config: Configuration for the pipeline run.
|
154
|
-
auth_context: Authentication context.
|
155
|
-
|
156
|
-
Raises:
|
157
|
-
ValueError: If the build does not have an associated deployment.
|
158
|
-
|
159
|
-
Returns:
|
160
|
-
The created run.
|
161
|
-
"""
|
162
|
-
from zenml.zen_server.pipeline_deployment.utils import (
|
163
|
-
run_pipeline,
|
164
|
-
)
|
165
|
-
|
166
|
-
build = verify_permissions_and_get_entity(
|
167
|
-
id=build_id, get_method=zen_store().get_build, hydrate=True
|
168
|
-
)
|
169
|
-
|
170
|
-
verify_permission(
|
171
|
-
resource_type=ResourceType.PIPELINE_RUN, action=Action.CREATE
|
172
|
-
)
|
173
|
-
|
174
|
-
if not build.template_deployment_id:
|
175
|
-
raise ValueError("Build does not have template deployment.")
|
176
|
-
|
177
|
-
deployment = zen_store().get_deployment(
|
178
|
-
deployment_id=build.template_deployment_id, hydrate=True
|
179
|
-
)
|
180
|
-
deployment.get_metadata().build = build
|
181
|
-
|
182
|
-
return run_pipeline(
|
183
|
-
deployment=deployment,
|
184
|
-
run_config=config,
|
185
|
-
background_tasks=background_tasks,
|
186
|
-
auth_context=auth_context,
|
187
|
-
)
|
@@ -13,18 +13,15 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Endpoint definitions for deployments."""
|
15
15
|
|
16
|
-
from typing import Optional
|
17
16
|
from uuid import UUID
|
18
17
|
|
19
|
-
from fastapi import APIRouter,
|
18
|
+
from fastapi import APIRouter, Depends, Security
|
20
19
|
|
21
|
-
from zenml.config.pipeline_run_configuration import PipelineRunConfiguration
|
22
20
|
from zenml.constants import API, PIPELINE_DEPLOYMENTS, VERSION_1
|
23
21
|
from zenml.models import (
|
24
22
|
Page,
|
25
23
|
PipelineDeploymentFilter,
|
26
24
|
PipelineDeploymentResponse,
|
27
|
-
PipelineRunResponse,
|
28
25
|
)
|
29
26
|
from zenml.zen_server.auth import AuthContext, authorize
|
30
27
|
from zenml.zen_server.exceptions import error_response
|
@@ -33,8 +30,7 @@ from zenml.zen_server.rbac.endpoint_utils import (
|
|
33
30
|
verify_permissions_and_get_entity,
|
34
31
|
verify_permissions_and_list_entities,
|
35
32
|
)
|
36
|
-
from zenml.zen_server.rbac.models import
|
37
|
-
from zenml.zen_server.rbac.utils import verify_permission
|
33
|
+
from zenml.zen_server.rbac.models import ResourceType
|
38
34
|
from zenml.zen_server.utils import (
|
39
35
|
handle_exceptions,
|
40
36
|
make_dependable,
|
@@ -133,53 +129,6 @@ def delete_deployment(
|
|
133
129
|
|
134
130
|
if server_config().workload_manager_enabled:
|
135
131
|
|
136
|
-
@router.post(
|
137
|
-
"/{deployment_id}/runs",
|
138
|
-
responses={
|
139
|
-
401: error_response,
|
140
|
-
404: error_response,
|
141
|
-
422: error_response,
|
142
|
-
},
|
143
|
-
)
|
144
|
-
@handle_exceptions
|
145
|
-
def create_deployment_run(
|
146
|
-
deployment_id: UUID,
|
147
|
-
background_tasks: BackgroundTasks,
|
148
|
-
config: Optional[PipelineRunConfiguration] = None,
|
149
|
-
auth_context: AuthContext = Security(authorize),
|
150
|
-
) -> PipelineRunResponse:
|
151
|
-
"""Run a pipeline from a pipeline deployment.
|
152
|
-
|
153
|
-
Args:
|
154
|
-
deployment_id: The ID of the deployment.
|
155
|
-
background_tasks: Background tasks.
|
156
|
-
config: Configuration for the pipeline run.
|
157
|
-
auth_context: Authentication context.
|
158
|
-
|
159
|
-
Returns:
|
160
|
-
The created run.
|
161
|
-
"""
|
162
|
-
from zenml.zen_server.pipeline_deployment.utils import (
|
163
|
-
run_pipeline,
|
164
|
-
)
|
165
|
-
|
166
|
-
deployment = verify_permissions_and_get_entity(
|
167
|
-
id=deployment_id,
|
168
|
-
get_method=zen_store().get_deployment,
|
169
|
-
hydrate=True,
|
170
|
-
)
|
171
|
-
|
172
|
-
verify_permission(
|
173
|
-
resource_type=ResourceType.PIPELINE_RUN, action=Action.CREATE
|
174
|
-
)
|
175
|
-
|
176
|
-
return run_pipeline(
|
177
|
-
deployment=deployment,
|
178
|
-
run_config=config,
|
179
|
-
background_tasks=background_tasks,
|
180
|
-
auth_context=auth_context,
|
181
|
-
)
|
182
|
-
|
183
132
|
@router.get(
|
184
133
|
"/{deployment_id}/logs",
|
185
134
|
responses={
|
@@ -17,10 +17,8 @@ from uuid import UUID
|
|
17
17
|
|
18
18
|
from fastapi import APIRouter, Depends, Security
|
19
19
|
|
20
|
-
from zenml.config.pipeline_spec import PipelineSpec
|
21
20
|
from zenml.constants import (
|
22
21
|
API,
|
23
|
-
PIPELINE_SPEC,
|
24
22
|
PIPELINES,
|
25
23
|
REPORTABLE_RESOURCES,
|
26
24
|
RUNS,
|
@@ -29,8 +27,6 @@ from zenml.constants import (
|
|
29
27
|
from zenml.models import (
|
30
28
|
Page,
|
31
29
|
PipelineFilter,
|
32
|
-
PipelineNamespaceFilter,
|
33
|
-
PipelineNamespaceResponse,
|
34
30
|
PipelineResponse,
|
35
31
|
PipelineRunFilter,
|
36
32
|
PipelineRunResponse,
|
@@ -46,9 +42,6 @@ from zenml.zen_server.rbac.endpoint_utils import (
|
|
46
42
|
verify_permissions_and_update_entity,
|
47
43
|
)
|
48
44
|
from zenml.zen_server.rbac.models import ResourceType
|
49
|
-
from zenml.zen_server.rbac.utils import (
|
50
|
-
get_allowed_resource_ids,
|
51
|
-
)
|
52
45
|
from zenml.zen_server.utils import (
|
53
46
|
handle_exceptions,
|
54
47
|
make_dependable,
|
@@ -64,7 +57,6 @@ router = APIRouter(
|
|
64
57
|
|
65
58
|
@router.get(
|
66
59
|
"",
|
67
|
-
response_model=Page[PipelineResponse],
|
68
60
|
responses={401: error_response, 404: error_response, 422: error_response},
|
69
61
|
)
|
70
62
|
@handle_exceptions
|
@@ -96,7 +88,6 @@ def list_pipelines(
|
|
96
88
|
|
97
89
|
@router.get(
|
98
90
|
"/{pipeline_id}",
|
99
|
-
response_model=PipelineResponse,
|
100
91
|
responses={401: error_response, 404: error_response, 422: error_response},
|
101
92
|
)
|
102
93
|
@handle_exceptions
|
@@ -122,7 +113,6 @@ def get_pipeline(
|
|
122
113
|
|
123
114
|
@router.put(
|
124
115
|
"/{pipeline_id}",
|
125
|
-
response_model=PipelineResponse,
|
126
116
|
responses={401: error_response, 404: error_response, 422: error_response},
|
127
117
|
)
|
128
118
|
@handle_exceptions
|
@@ -179,7 +169,6 @@ def delete_pipeline(
|
|
179
169
|
|
180
170
|
@router.get(
|
181
171
|
"/{pipeline_id}" + RUNS,
|
182
|
-
response_model=Page[PipelineRunResponse],
|
183
172
|
responses={401: error_response, 404: error_response, 422: error_response},
|
184
173
|
)
|
185
174
|
@handle_exceptions
|
@@ -201,66 +190,4 @@ def list_pipeline_runs(
|
|
201
190
|
Returns:
|
202
191
|
The pipeline runs according to query filters.
|
203
192
|
"""
|
204
|
-
return zen_store().list_runs(pipeline_run_filter_model)
|
205
|
-
|
206
|
-
|
207
|
-
@router.get(
|
208
|
-
"/{pipeline_id}" + PIPELINE_SPEC,
|
209
|
-
response_model=PipelineSpec,
|
210
|
-
responses={401: error_response, 404: error_response, 422: error_response},
|
211
|
-
)
|
212
|
-
@handle_exceptions
|
213
|
-
def get_pipeline_spec(
|
214
|
-
pipeline_id: UUID,
|
215
|
-
_: AuthContext = Security(authorize),
|
216
|
-
) -> PipelineSpec:
|
217
|
-
"""Gets the spec of a specific pipeline using its unique id.
|
218
|
-
|
219
|
-
Args:
|
220
|
-
pipeline_id: ID of the pipeline to get.
|
221
|
-
|
222
|
-
Returns:
|
223
|
-
The spec of the pipeline.
|
224
|
-
"""
|
225
|
-
pipeline = verify_permissions_and_get_entity(
|
226
|
-
id=pipeline_id, get_method=zen_store().get_pipeline
|
227
|
-
)
|
228
|
-
return pipeline.spec
|
229
|
-
|
230
|
-
|
231
|
-
namespace_router = APIRouter(
|
232
|
-
prefix=API + VERSION_1 + "/pipeline_namespaces",
|
233
|
-
tags=["pipeline_namespaces"],
|
234
|
-
responses={401: error_response, 403: error_response},
|
235
|
-
)
|
236
|
-
|
237
|
-
|
238
|
-
@namespace_router.get(
|
239
|
-
"",
|
240
|
-
responses={401: error_response, 404: error_response, 422: error_response},
|
241
|
-
)
|
242
|
-
@handle_exceptions
|
243
|
-
def list_pipeline_namespaces(
|
244
|
-
filter_model: PipelineNamespaceFilter = Depends(
|
245
|
-
make_dependable(PipelineNamespaceFilter)
|
246
|
-
),
|
247
|
-
hydrate: bool = False,
|
248
|
-
auth_context: AuthContext = Security(authorize),
|
249
|
-
) -> Page[PipelineNamespaceResponse]:
|
250
|
-
"""Gets a list of pipeline namespaces.
|
251
|
-
|
252
|
-
Args:
|
253
|
-
filter_model: Filter model used for pagination, sorting,
|
254
|
-
filtering.
|
255
|
-
hydrate: Flag deciding whether to hydrate the output model(s)
|
256
|
-
by including metadata fields in the response.
|
257
|
-
auth_context: Authentication context.
|
258
|
-
|
259
|
-
Returns:
|
260
|
-
List of pipeline namespace objects.
|
261
|
-
"""
|
262
|
-
allowed_ids = get_allowed_resource_ids(resource_type=ResourceType.PIPELINE)
|
263
|
-
filter_model.configure_rbac(
|
264
|
-
authenticated_user_id=auth_context.user.id, id=allowed_ids
|
265
|
-
)
|
266
|
-
return zen_store().list_pipeline_namespaces(filter_model, hydrate=hydrate)
|
193
|
+
return zen_store().list_runs(pipeline_run_filter_model, hydrate=hydrate)
|
@@ -0,0 +1,212 @@
|
|
1
|
+
# Copyright (c) ZenML GmbH 2024. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at:
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
12
|
+
# or implied. See the License for the specific language governing
|
13
|
+
# permissions and limitations under the License.
|
14
|
+
"""Endpoint definitions for run templates."""
|
15
|
+
|
16
|
+
from typing import Optional
|
17
|
+
from uuid import UUID
|
18
|
+
|
19
|
+
from fastapi import APIRouter, BackgroundTasks, Depends, Security
|
20
|
+
|
21
|
+
from zenml.analytics.enums import AnalyticsEvent
|
22
|
+
from zenml.analytics.utils import track_handler
|
23
|
+
from zenml.config.pipeline_run_configuration import PipelineRunConfiguration
|
24
|
+
from zenml.constants import API, RUN_TEMPLATES, VERSION_1
|
25
|
+
from zenml.models import (
|
26
|
+
Page,
|
27
|
+
PipelineRunResponse,
|
28
|
+
RunTemplateFilter,
|
29
|
+
RunTemplateResponse,
|
30
|
+
RunTemplateUpdate,
|
31
|
+
)
|
32
|
+
from zenml.zen_server.auth import AuthContext, authorize
|
33
|
+
from zenml.zen_server.exceptions import error_response
|
34
|
+
from zenml.zen_server.rbac.endpoint_utils import (
|
35
|
+
verify_permissions_and_delete_entity,
|
36
|
+
verify_permissions_and_get_entity,
|
37
|
+
verify_permissions_and_list_entities,
|
38
|
+
verify_permissions_and_update_entity,
|
39
|
+
)
|
40
|
+
from zenml.zen_server.rbac.models import Action, ResourceType
|
41
|
+
from zenml.zen_server.rbac.utils import verify_permission
|
42
|
+
from zenml.zen_server.utils import (
|
43
|
+
handle_exceptions,
|
44
|
+
make_dependable,
|
45
|
+
server_config,
|
46
|
+
zen_store,
|
47
|
+
)
|
48
|
+
|
49
|
+
router = APIRouter(
|
50
|
+
prefix=API + VERSION_1 + RUN_TEMPLATES,
|
51
|
+
tags=["run_templates"],
|
52
|
+
responses={401: error_response, 403: error_response},
|
53
|
+
)
|
54
|
+
|
55
|
+
|
56
|
+
@router.get(
|
57
|
+
"",
|
58
|
+
responses={401: error_response, 404: error_response, 422: error_response},
|
59
|
+
)
|
60
|
+
@handle_exceptions
|
61
|
+
def list_run_templates(
|
62
|
+
filter_model: RunTemplateFilter = Depends(
|
63
|
+
make_dependable(RunTemplateFilter)
|
64
|
+
),
|
65
|
+
hydrate: bool = False,
|
66
|
+
_: AuthContext = Security(authorize),
|
67
|
+
) -> Page[RunTemplateResponse]:
|
68
|
+
"""Get a page of run templates.
|
69
|
+
|
70
|
+
Args:
|
71
|
+
filter_model: Filter model used for pagination, sorting,
|
72
|
+
filtering.
|
73
|
+
hydrate: Flag deciding whether to hydrate the output model(s)
|
74
|
+
by including metadata fields in the response.
|
75
|
+
|
76
|
+
Returns:
|
77
|
+
Page of run templates.
|
78
|
+
"""
|
79
|
+
return verify_permissions_and_list_entities(
|
80
|
+
filter_model=filter_model,
|
81
|
+
resource_type=ResourceType.RUN_TEMPLATE,
|
82
|
+
list_method=zen_store().list_run_templates,
|
83
|
+
hydrate=hydrate,
|
84
|
+
)
|
85
|
+
|
86
|
+
|
87
|
+
@router.get(
|
88
|
+
"/{template_id}",
|
89
|
+
responses={401: error_response, 404: error_response, 422: error_response},
|
90
|
+
)
|
91
|
+
@handle_exceptions
|
92
|
+
def get_run_template(
|
93
|
+
template_id: UUID,
|
94
|
+
hydrate: bool = True,
|
95
|
+
_: AuthContext = Security(authorize),
|
96
|
+
) -> RunTemplateResponse:
|
97
|
+
"""Get a run template.
|
98
|
+
|
99
|
+
Args:
|
100
|
+
template_id: ID of the run template to get.
|
101
|
+
hydrate: Flag deciding whether to hydrate the output model(s)
|
102
|
+
by including metadata fields in the response.
|
103
|
+
|
104
|
+
Returns:
|
105
|
+
The run template.
|
106
|
+
"""
|
107
|
+
return verify_permissions_and_get_entity(
|
108
|
+
id=template_id,
|
109
|
+
get_method=zen_store().get_run_template,
|
110
|
+
hydrate=hydrate,
|
111
|
+
)
|
112
|
+
|
113
|
+
|
114
|
+
@router.put(
|
115
|
+
"/{template_id}",
|
116
|
+
responses={401: error_response, 404: error_response, 422: error_response},
|
117
|
+
)
|
118
|
+
@handle_exceptions
|
119
|
+
def update_run_template(
|
120
|
+
template_id: UUID,
|
121
|
+
update: RunTemplateUpdate,
|
122
|
+
_: AuthContext = Security(authorize),
|
123
|
+
) -> RunTemplateResponse:
|
124
|
+
"""Update a run template.
|
125
|
+
|
126
|
+
Args:
|
127
|
+
template_id: ID of the run template to get.
|
128
|
+
update: The updates to apply.
|
129
|
+
|
130
|
+
Returns:
|
131
|
+
The updated run template.
|
132
|
+
"""
|
133
|
+
return verify_permissions_and_update_entity(
|
134
|
+
id=template_id,
|
135
|
+
update_model=update,
|
136
|
+
get_method=zen_store().get_run_template,
|
137
|
+
update_method=zen_store().update_run_template,
|
138
|
+
)
|
139
|
+
|
140
|
+
|
141
|
+
@router.delete(
|
142
|
+
"/{template_id}",
|
143
|
+
responses={401: error_response, 404: error_response, 422: error_response},
|
144
|
+
)
|
145
|
+
@handle_exceptions
|
146
|
+
def delete_run_template(
|
147
|
+
template_id: UUID,
|
148
|
+
_: AuthContext = Security(authorize),
|
149
|
+
) -> None:
|
150
|
+
"""Delete a run template.
|
151
|
+
|
152
|
+
Args:
|
153
|
+
template_id: ID of the run template to delete.
|
154
|
+
"""
|
155
|
+
verify_permissions_and_delete_entity(
|
156
|
+
id=template_id,
|
157
|
+
get_method=zen_store().get_run_template,
|
158
|
+
delete_method=zen_store().delete_run_template,
|
159
|
+
)
|
160
|
+
|
161
|
+
|
162
|
+
if server_config().workload_manager_enabled:
|
163
|
+
|
164
|
+
@router.post(
|
165
|
+
"/{template_id}/runs",
|
166
|
+
responses={
|
167
|
+
401: error_response,
|
168
|
+
404: error_response,
|
169
|
+
422: error_response,
|
170
|
+
},
|
171
|
+
)
|
172
|
+
@handle_exceptions
|
173
|
+
def create_template_run(
|
174
|
+
template_id: UUID,
|
175
|
+
background_tasks: BackgroundTasks,
|
176
|
+
config: Optional[PipelineRunConfiguration] = None,
|
177
|
+
auth_context: AuthContext = Security(authorize),
|
178
|
+
) -> PipelineRunResponse:
|
179
|
+
"""Run a pipeline from a template.
|
180
|
+
|
181
|
+
Args:
|
182
|
+
template_id: The ID of the template.
|
183
|
+
background_tasks: Background tasks.
|
184
|
+
config: Configuration for the pipeline run.
|
185
|
+
auth_context: Authentication context.
|
186
|
+
|
187
|
+
Returns:
|
188
|
+
The created pipeline run.
|
189
|
+
"""
|
190
|
+
from zenml.zen_server.template_execution.utils import run_template
|
191
|
+
|
192
|
+
with track_handler(event=AnalyticsEvent.EXECUTED_RUN_TEMPLATE):
|
193
|
+
template = verify_permissions_and_get_entity(
|
194
|
+
id=template_id,
|
195
|
+
get_method=zen_store().get_run_template,
|
196
|
+
hydrate=True,
|
197
|
+
)
|
198
|
+
|
199
|
+
verify_permission(
|
200
|
+
resource_type=ResourceType.PIPELINE_DEPLOYMENT,
|
201
|
+
action=Action.CREATE,
|
202
|
+
)
|
203
|
+
verify_permission(
|
204
|
+
resource_type=ResourceType.PIPELINE_RUN, action=Action.CREATE
|
205
|
+
)
|
206
|
+
|
207
|
+
return run_template(
|
208
|
+
template=template,
|
209
|
+
auth_context=auth_context,
|
210
|
+
background_tasks=background_tasks,
|
211
|
+
run_config=config,
|
212
|
+
)
|
@@ -78,6 +78,7 @@ def get_stack_deployment_config(
|
|
78
78
|
provider: StackDeploymentProvider,
|
79
79
|
stack_name: str,
|
80
80
|
location: Optional[str] = None,
|
81
|
+
terraform: bool = False,
|
81
82
|
auth_context: AuthContext = Security(authorize),
|
82
83
|
) -> StackDeploymentConfig:
|
83
84
|
"""Return the URL to deploy the ZenML stack to the specified cloud provider.
|
@@ -87,6 +88,7 @@ def get_stack_deployment_config(
|
|
87
88
|
provider: The stack deployment provider.
|
88
89
|
stack_name: The name of the stack.
|
89
90
|
location: The location where the stack should be deployed.
|
91
|
+
terraform: Whether the stack should be deployed using Terraform.
|
90
92
|
auth_context: The authentication context.
|
91
93
|
|
92
94
|
Returns:
|
@@ -118,6 +120,7 @@ def get_stack_deployment_config(
|
|
118
120
|
api_token = token.encode(expires=expires)
|
119
121
|
|
120
122
|
return stack_deployment_class(
|
123
|
+
terraform=terraform,
|
121
124
|
stack_name=stack_name,
|
122
125
|
location=location,
|
123
126
|
zenml_server_url=str(url),
|
@@ -134,6 +137,7 @@ def get_deployed_stack(
|
|
134
137
|
stack_name: str,
|
135
138
|
location: Optional[str] = None,
|
136
139
|
date_start: Optional[datetime.datetime] = None,
|
140
|
+
terraform: bool = False,
|
137
141
|
_: AuthContext = Security(authorize),
|
138
142
|
) -> Optional[DeployedStack]:
|
139
143
|
"""Return a matching ZenML stack that was deployed and registered.
|
@@ -143,6 +147,7 @@ def get_deployed_stack(
|
|
143
147
|
stack_name: The name of the stack.
|
144
148
|
location: The location where the stack should be deployed.
|
145
149
|
date_start: The date when the deployment started.
|
150
|
+
terraform: Whether the stack was deployed using Terraform.
|
146
151
|
|
147
152
|
Returns:
|
148
153
|
The ZenML stack that was deployed and registered or None if the stack
|
@@ -150,6 +155,7 @@ def get_deployed_stack(
|
|
150
155
|
"""
|
151
156
|
stack_deployment_class = get_stack_deployment_class(provider)
|
152
157
|
return stack_deployment_class(
|
158
|
+
terraform=terraform,
|
153
159
|
stack_name=stack_name,
|
154
160
|
location=location,
|
155
161
|
# These fields are not needed for this operation
|
@@ -286,7 +286,6 @@ if server_config().auth_scheme != AuthScheme.EXTERNAL:
|
|
286
286
|
# - active
|
287
287
|
# - password
|
288
288
|
# - email_opted_in + email
|
289
|
-
# - hub_token
|
290
289
|
#
|
291
290
|
safe_user_update = user_update.create_copy(
|
292
291
|
exclude={
|
@@ -298,7 +297,6 @@ if server_config().auth_scheme != AuthScheme.EXTERNAL:
|
|
298
297
|
"old_password",
|
299
298
|
"email_opted_in",
|
300
299
|
"email",
|
301
|
-
"hub_token",
|
302
300
|
},
|
303
301
|
)
|
304
302
|
|
@@ -387,7 +385,6 @@ if server_config().auth_scheme != AuthScheme.EXTERNAL:
|
|
387
385
|
if (
|
388
386
|
user_update.email_opted_in is not None
|
389
387
|
or user_update.email is not None
|
390
|
-
or user_update.hub_token is not None
|
391
388
|
):
|
392
389
|
if user.id != auth_context.user.id:
|
393
390
|
raise IllegalOperationError(
|
@@ -399,8 +396,6 @@ if server_config().auth_scheme != AuthScheme.EXTERNAL:
|
|
399
396
|
if safe_user_update.email_opted_in is not None:
|
400
397
|
safe_user_update.email_opted_in = user_update.email_opted_in
|
401
398
|
safe_user_update.email = user_update.email
|
402
|
-
if safe_user_update.hub_token is not None:
|
403
|
-
safe_user_update.hub_token = user_update.hub_token
|
404
399
|
|
405
400
|
updated_user = zen_store().update_user(
|
406
401
|
user_id=user.id,
|
@@ -444,7 +439,6 @@ if server_config().auth_scheme != AuthScheme.EXTERNAL:
|
|
444
439
|
# - is_admin
|
445
440
|
# - active
|
446
441
|
# - old_password
|
447
|
-
# - hub_token
|
448
442
|
#
|
449
443
|
safe_user_update = user_update.create_copy(
|
450
444
|
exclude={
|
@@ -453,7 +447,6 @@ if server_config().auth_scheme != AuthScheme.EXTERNAL:
|
|
453
447
|
"is_admin",
|
454
448
|
"active",
|
455
449
|
"old_password",
|
456
|
-
"hub_token",
|
457
450
|
},
|
458
451
|
)
|
459
452
|
|