zenml-nightly 0.62.0.dev20240728__py3-none-any.whl → 0.63.0.dev20240801__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 +1 -1
- RELEASE_NOTES.md +41 -0
- zenml/VERSION +1 -1
- zenml/actions/pipeline_run/pipeline_run_action.py +19 -17
- zenml/analytics/enums.py +4 -0
- zenml/cli/__init__.py +28 -15
- zenml/cli/base.py +1 -1
- zenml/cli/pipeline.py +54 -61
- zenml/cli/stack.py +6 -8
- zenml/client.py +232 -99
- zenml/config/compiler.py +14 -22
- zenml/config/pipeline_run_configuration.py +3 -0
- zenml/config/server_config.py +3 -0
- zenml/config/source.py +2 -1
- zenml/constants.py +2 -0
- zenml/enums.py +3 -0
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +13 -4
- zenml/integrations/databricks/flavors/databricks_orchestrator_flavor.py +11 -2
- zenml/integrations/databricks/orchestrators/databricks_orchestrator.py +19 -13
- zenml/models/__init__.py +26 -10
- 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 +56 -0
- zenml/models/v2/core/pipeline_run.py +52 -1
- zenml/models/v2/core/run_template.py +393 -0
- zenml/models/v2/misc/stack_deployment.py +5 -0
- zenml/new/pipelines/build_utils.py +34 -58
- zenml/new/pipelines/pipeline.py +17 -76
- zenml/new/pipelines/run_utils.py +12 -0
- zenml/post_execution/pipeline.py +1 -4
- zenml/service_connectors/service_connector_utils.py +4 -2
- zenml/stack_deployments/aws_stack_deployment.py +6 -5
- zenml/stack_deployments/azure_stack_deployment.py +118 -11
- zenml/stack_deployments/gcp_stack_deployment.py +12 -5
- zenml/stack_deployments/stack_deployment.py +6 -5
- zenml/steps/utils.py +0 -4
- zenml/utils/package_utils.py +39 -0
- zenml/zen_server/dashboard/assets/{404-B_YdvmwS.js → 404-CI13wQp4.js} +1 -1
- zenml/zen_server/dashboard/assets/{@reactflow-l_1hUr1S.js → @reactflow-DIYUhKYX.js} +1 -1
- zenml/zen_server/dashboard/assets/{@tanstack-DYiOyJUL.js → @tanstack-k96lU_C-.js} +4 -4
- zenml/zen_server/dashboard/assets/{AwarenessChannel-CFg5iX4Z.js → AwarenessChannel-BNg5uWgI.js} +1 -1
- zenml/zen_server/dashboard/assets/{CodeSnippet-Dvkx_82E.js → CodeSnippet-Cyp7f4dM.js} +2 -2
- zenml/zen_server/dashboard/assets/CollapsibleCard-Cu_A9W57.js +1 -0
- zenml/zen_server/dashboard/assets/{Commands-DoN1xrEq.js → Commands-DmQwTXjj.js} +1 -1
- zenml/zen_server/dashboard/assets/{CopyButton-Cr7xYEPb.js → CopyButton-B3sWVJ4Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{CsvVizualization-Ck-nZ43m.js → CsvVizualization-BvqItd-O.js} +1 -1
- zenml/zen_server/dashboard/assets/{Error-kLtljEOM.js → Error-DbXCTGua.js} +1 -1
- zenml/zen_server/dashboard/assets/{ExecutionStatus-DguLLgTK.js → ExecutionStatus-9zM7eaLh.js} +1 -1
- zenml/zen_server/dashboard/assets/{Helpbox-BXUMP21n.js → Helpbox-BIiNc-uH.js} +1 -1
- zenml/zen_server/dashboard/assets/{Infobox-DSt0O-dm.js → Infobox-iv1Nu1A0.js} +1 -1
- zenml/zen_server/dashboard/assets/{InlineAvatar-xsrsIGE-.js → InlineAvatar-BvBtO2Dp.js} +1 -1
- zenml/zen_server/dashboard/assets/ProviderRadio-pSAvrGRS.js +1 -0
- zenml/zen_server/dashboard/assets/SearchField-CXoBknpt.js +1 -0
- zenml/zen_server/dashboard/assets/{SetPassword-BXGTWiwj.js → SetPassword-BOxpgh6N.js} +1 -1
- zenml/zen_server/dashboard/assets/{SuccessStep-DZC60t0x.js → SuccessStep-CTSKN2lp.js} +1 -1
- zenml/zen_server/dashboard/assets/Tick-Bnr2TpW6.js +1 -0
- zenml/zen_server/dashboard/assets/{UpdatePasswordSchemas-DGvwFWO1.js → UpdatePasswordSchemas-BeCeaRW5.js} +1 -1
- zenml/zen_server/dashboard/assets/chevron-down-D_ZlKMqH.js +1 -0
- zenml/zen_server/dashboard/assets/{cloud-only-C_yFCAkP.js → cloud-only-qelmY92E.js} +1 -1
- zenml/zen_server/dashboard/assets/components-DWe4cTjS.js +1 -0
- zenml/zen_server/dashboard/assets/dots-horizontal-BObFzD5l.js +1 -0
- zenml/zen_server/dashboard/assets/{index-BczVOqUf.js → index-KsTz2dHG.js} +5 -5
- zenml/zen_server/dashboard/assets/index-vfjX_fJV.css +1 -0
- zenml/zen_server/dashboard/assets/index.esm-CbHNSeVw.js +1 -0
- zenml/zen_server/dashboard/assets/{login-mutation-CrHrndTI.js → login-mutation-DRpbESS7.js} +1 -1
- zenml/zen_server/dashboard/assets/{not-found-DYa4pC-C.js → not-found-Dfx9hfkf.js} +1 -1
- zenml/zen_server/dashboard/assets/package-ClbU3KUi.js +1 -0
- zenml/zen_server/dashboard/assets/{page-uA5prJGY.js → page-399pVZHU.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-1h_sD1jz.js → page-BoFtUD9H.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BDns21Iz.js → page-Btu39x7k.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BnaevhnB.js → page-BxiWdeyg.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-1iL8aMqs.js → page-C176KxyB.js} +1 -1
- zenml/zen_server/dashboard/assets/page-C6tXXjnK.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BkeAAYwp.js → page-CDgZmwxP.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CP9obrnG.js +1 -0
- zenml/zen_server/dashboard/assets/{page-C6-UGEbH.js → page-CZe9GEBF.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CaTOsNNw.js +1 -0
- zenml/zen_server/dashboard/assets/{page-CCNRIt_f.js → page-Cjn97HMv.js} +1 -1
- zenml/zen_server/dashboard/assets/page-CmXmB_5i.js +1 -0
- zenml/zen_server/dashboard/assets/page-CvGAOfad.js +1 -0
- zenml/zen_server/dashboard/assets/page-CzucfYPo.js +2 -0
- zenml/zen_server/dashboard/assets/{page-Bi-wtWiO.js → page-D0bbc-qr.js} +1 -1
- zenml/zen_server/dashboard/assets/page-DLEtD2ex.js +1 -0
- zenml/zen_server/dashboard/assets/{page-BhgCDInH.js → page-DVPxY5fT.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-BkuQDIf-.js → page-DYBNGxJt.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-8a4UMKXZ.js → page-DtpwnNXq.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-B6h3iaHJ.js → page-DupV0aBd.js} +1 -1
- zenml/zen_server/dashboard/assets/page-EweAR81y.js +1 -0
- zenml/zen_server/dashboard/assets/{page-MFQyIJd3.js → page-f3jBVI5Z.js} +1 -1
- zenml/zen_server/dashboard/assets/{page-2grKx_MY.js → page-p2hLJdS2.js} +1 -1
- zenml/zen_server/dashboard/assets/page-w-YaL77M.js +9 -0
- zenml/zen_server/dashboard/assets/persist-BReKApOc.js +14 -0
- zenml/zen_server/dashboard/assets/plus-DOeLmm7C.js +1 -0
- zenml/zen_server/dashboard/assets/{stack-detail-query-Cficsl6d.js → stack-detail-query-Ck7j7BP_.js} +1 -1
- zenml/zen_server/dashboard/assets/{update-server-settings-mutation-7d8xi1tS.js → update-server-settings-mutation-f3ZT7psb.js} +1 -1
- zenml/zen_server/dashboard/assets/{url-D7mAQGUM.js → url-rGEp5Umh.js} +1 -1
- zenml/zen_server/dashboard/assets/{zod-BhoGpZ63.js → zod-BtSyGx4C.js} +1 -1
- zenml/zen_server/dashboard/index.html +5 -5
- 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.2fa6e528a6e7447caaf35dadfe7514bb.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.4aab7e98.chunk.js} +2 -2
- zenml/zen_server/dashboard_legacy/static/js/{main.3b27024b.chunk.js.map → main.4aab7e98.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/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 +2 -2
- zenml/zen_server/zen_server_api.py +2 -1
- zenml/zen_stores/migrations/versions/0.63.0_release.py +23 -0
- zenml/zen_stores/migrations/versions/7d1919bb1ef0_add_run_templates.py +100 -0
- zenml/zen_stores/migrations/versions/b59aa68fdb1f_simplify_pipelines.py +139 -0
- zenml/zen_stores/rest_zen_store.py +107 -36
- 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 +29 -2
- zenml/zen_stores/schemas/pipeline_run_schemas.py +26 -3
- zenml/zen_stores/schemas/pipeline_schemas.py +29 -30
- zenml/zen_stores/schemas/run_template_schemas.py +264 -0
- zenml/zen_stores/schemas/step_run_schemas.py +11 -4
- zenml/zen_stores/sql_zen_store.py +364 -150
- zenml/zen_stores/template_utils.py +261 -0
- zenml/zen_stores/zen_store_interface.py +93 -20
- {zenml_nightly-0.62.0.dev20240728.dist-info → zenml_nightly-0.63.0.dev20240801.dist-info}/METADATA +2 -2
- {zenml_nightly-0.62.0.dev20240728.dist-info → zenml_nightly-0.63.0.dev20240801.dist-info}/RECORD +139 -129
- zenml/models/v2/core/pipeline_namespace.py +0 -113
- zenml/new/pipelines/deserialization_utils.py +0 -292
- zenml/zen_server/dashboard/assets/CollapsibleCard-opiuBHHc.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-rK_Wuy2W.js +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-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/{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.dev20240728.dist-info → zenml_nightly-0.63.0.dev20240801.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.62.0.dev20240728.dist-info → zenml_nightly-0.63.0.dev20240801.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.62.0.dev20240728.dist-info → zenml_nightly-0.63.0.dev20240801.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,264 @@
|
|
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
|
+
"""SQLModel implementation of run template tables."""
|
15
|
+
|
16
|
+
from datetime import datetime
|
17
|
+
from typing import TYPE_CHECKING, Any, List, Optional
|
18
|
+
from uuid import UUID
|
19
|
+
|
20
|
+
from sqlalchemy import Column, String, UniqueConstraint
|
21
|
+
from sqlalchemy.dialects.mysql import MEDIUMTEXT
|
22
|
+
from sqlmodel import Field, Relationship
|
23
|
+
|
24
|
+
from zenml.constants import MEDIUMTEXT_MAX_LENGTH
|
25
|
+
from zenml.enums import TaggableResourceTypes
|
26
|
+
from zenml.models import (
|
27
|
+
RunTemplateRequest,
|
28
|
+
RunTemplateResponse,
|
29
|
+
RunTemplateResponseBody,
|
30
|
+
RunTemplateResponseMetadata,
|
31
|
+
RunTemplateResponseResources,
|
32
|
+
RunTemplateUpdate,
|
33
|
+
)
|
34
|
+
from zenml.zen_stores.schemas.base_schemas import BaseSchema
|
35
|
+
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
36
|
+
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
37
|
+
from zenml.zen_stores.schemas.workspace_schemas import WorkspaceSchema
|
38
|
+
|
39
|
+
if TYPE_CHECKING:
|
40
|
+
from zenml.zen_stores.schemas.pipeline_deployment_schemas import (
|
41
|
+
PipelineDeploymentSchema,
|
42
|
+
)
|
43
|
+
from zenml.zen_stores.schemas.pipeline_run_schemas import PipelineRunSchema
|
44
|
+
from zenml.zen_stores.schemas.tag_schemas import TagResourceSchema
|
45
|
+
|
46
|
+
|
47
|
+
class RunTemplateSchema(BaseSchema, table=True):
|
48
|
+
"""SQL Model for run templates."""
|
49
|
+
|
50
|
+
__tablename__ = "run_template"
|
51
|
+
__table_args__ = (
|
52
|
+
UniqueConstraint(
|
53
|
+
"name",
|
54
|
+
"workspace_id",
|
55
|
+
name="unique_template_name_in_workspace",
|
56
|
+
),
|
57
|
+
)
|
58
|
+
|
59
|
+
name: str = Field(nullable=False)
|
60
|
+
description: Optional[str] = Field(
|
61
|
+
sa_column=Column(
|
62
|
+
String(length=MEDIUMTEXT_MAX_LENGTH).with_variant(
|
63
|
+
MEDIUMTEXT, "mysql"
|
64
|
+
),
|
65
|
+
nullable=True,
|
66
|
+
)
|
67
|
+
)
|
68
|
+
|
69
|
+
user_id: Optional[UUID] = build_foreign_key_field(
|
70
|
+
source=__tablename__,
|
71
|
+
target=UserSchema.__tablename__,
|
72
|
+
source_column="user_id",
|
73
|
+
target_column="id",
|
74
|
+
ondelete="SET NULL",
|
75
|
+
nullable=True,
|
76
|
+
)
|
77
|
+
workspace_id: UUID = build_foreign_key_field(
|
78
|
+
source=__tablename__,
|
79
|
+
target=WorkspaceSchema.__tablename__,
|
80
|
+
source_column="workspace_id",
|
81
|
+
target_column="id",
|
82
|
+
ondelete="CASCADE",
|
83
|
+
nullable=False,
|
84
|
+
)
|
85
|
+
source_deployment_id: Optional[UUID] = build_foreign_key_field(
|
86
|
+
source=__tablename__,
|
87
|
+
target="pipeline_deployment",
|
88
|
+
source_column="source_deployment_id",
|
89
|
+
target_column="id",
|
90
|
+
ondelete="SET NULL",
|
91
|
+
nullable=True,
|
92
|
+
)
|
93
|
+
|
94
|
+
user: Optional["UserSchema"] = Relationship()
|
95
|
+
workspace: "WorkspaceSchema" = Relationship()
|
96
|
+
source_deployment: Optional["PipelineDeploymentSchema"] = Relationship(
|
97
|
+
sa_relationship_kwargs={
|
98
|
+
"foreign_keys": "RunTemplateSchema.source_deployment_id",
|
99
|
+
}
|
100
|
+
)
|
101
|
+
|
102
|
+
runs: List["PipelineRunSchema"] = Relationship(
|
103
|
+
sa_relationship_kwargs={
|
104
|
+
"primaryjoin": "RunTemplateSchema.id==PipelineDeploymentSchema.template_id",
|
105
|
+
"secondaryjoin": "PipelineDeploymentSchema.id==PipelineRunSchema.deployment_id",
|
106
|
+
"secondary": "pipeline_deployment",
|
107
|
+
"cascade": "delete",
|
108
|
+
"viewonly": True,
|
109
|
+
"order_by": "PipelineRunSchema.created",
|
110
|
+
}
|
111
|
+
)
|
112
|
+
|
113
|
+
tags: List["TagResourceSchema"] = Relationship(
|
114
|
+
sa_relationship_kwargs=dict(
|
115
|
+
primaryjoin=f"and_(TagResourceSchema.resource_type=='{TaggableResourceTypes.RUN_TEMPLATE.value}', foreign(TagResourceSchema.resource_id)==RunTemplateSchema.id)",
|
116
|
+
cascade="delete",
|
117
|
+
overlaps="tags",
|
118
|
+
),
|
119
|
+
)
|
120
|
+
|
121
|
+
@classmethod
|
122
|
+
def from_request(
|
123
|
+
cls,
|
124
|
+
request: RunTemplateRequest,
|
125
|
+
) -> "RunTemplateSchema":
|
126
|
+
"""Create a schema from a request.
|
127
|
+
|
128
|
+
Args:
|
129
|
+
request: The request to convert.
|
130
|
+
|
131
|
+
|
132
|
+
Returns:
|
133
|
+
The created schema.
|
134
|
+
"""
|
135
|
+
return cls(
|
136
|
+
user_id=request.user,
|
137
|
+
workspace_id=request.workspace,
|
138
|
+
name=request.name,
|
139
|
+
description=request.description,
|
140
|
+
source_deployment_id=request.source_deployment_id,
|
141
|
+
)
|
142
|
+
|
143
|
+
def update(self, update: RunTemplateUpdate) -> "RunTemplateSchema":
|
144
|
+
"""Update the schema.
|
145
|
+
|
146
|
+
Args:
|
147
|
+
update: The update model.
|
148
|
+
|
149
|
+
Returns:
|
150
|
+
The updated schema.
|
151
|
+
"""
|
152
|
+
for field, value in update.model_dump(
|
153
|
+
exclude_unset=True, exclude_none=True
|
154
|
+
).items():
|
155
|
+
setattr(self, field, value)
|
156
|
+
|
157
|
+
self.updated = datetime.utcnow()
|
158
|
+
return self
|
159
|
+
|
160
|
+
def to_model(
|
161
|
+
self,
|
162
|
+
include_metadata: bool = False,
|
163
|
+
include_resources: bool = False,
|
164
|
+
**kwargs: Any,
|
165
|
+
) -> RunTemplateResponse:
|
166
|
+
"""Convert the schema to a response model.
|
167
|
+
|
168
|
+
Args:
|
169
|
+
include_metadata: Whether the metadata will be filled.
|
170
|
+
include_resources: Whether the resources will be filled.
|
171
|
+
**kwargs: Keyword arguments to allow schema specific logic
|
172
|
+
|
173
|
+
Returns:
|
174
|
+
Model representing this schema.
|
175
|
+
"""
|
176
|
+
runnable = False
|
177
|
+
if (
|
178
|
+
self.source_deployment
|
179
|
+
and self.source_deployment.build
|
180
|
+
and self.source_deployment.build.stack
|
181
|
+
):
|
182
|
+
runnable = True
|
183
|
+
|
184
|
+
body = RunTemplateResponseBody(
|
185
|
+
user=self.user.to_model() if self.user else None,
|
186
|
+
created=self.created,
|
187
|
+
updated=self.updated,
|
188
|
+
runnable=runnable,
|
189
|
+
latest_run_id=self.runs[-1].id if self.runs else None,
|
190
|
+
latest_run_status=self.runs[-1].status if self.runs else None,
|
191
|
+
)
|
192
|
+
|
193
|
+
metadata = None
|
194
|
+
if include_metadata:
|
195
|
+
pipeline_spec = None
|
196
|
+
config_template = None
|
197
|
+
config_schema = None
|
198
|
+
|
199
|
+
if self.source_deployment:
|
200
|
+
from zenml.zen_stores import template_utils
|
201
|
+
|
202
|
+
pipeline_spec = self.source_deployment.to_model(
|
203
|
+
include_metadata=True, include_resources=True
|
204
|
+
).pipeline_spec
|
205
|
+
|
206
|
+
if (
|
207
|
+
self.source_deployment.build
|
208
|
+
and self.source_deployment.build.stack
|
209
|
+
):
|
210
|
+
config_template = template_utils.generate_config_template(
|
211
|
+
deployment=self.source_deployment
|
212
|
+
)
|
213
|
+
config_schema = template_utils.generate_config_schema(
|
214
|
+
deployment=self.source_deployment
|
215
|
+
)
|
216
|
+
|
217
|
+
metadata = RunTemplateResponseMetadata(
|
218
|
+
workspace=self.workspace.to_model(),
|
219
|
+
description=self.description,
|
220
|
+
pipeline_spec=pipeline_spec,
|
221
|
+
config_template=config_template,
|
222
|
+
config_schema=config_schema,
|
223
|
+
)
|
224
|
+
|
225
|
+
resources = None
|
226
|
+
if include_resources:
|
227
|
+
if self.source_deployment:
|
228
|
+
pipeline = (
|
229
|
+
self.source_deployment.pipeline.to_model()
|
230
|
+
if self.source_deployment.pipeline
|
231
|
+
else None
|
232
|
+
)
|
233
|
+
build = (
|
234
|
+
self.source_deployment.build.to_model()
|
235
|
+
if self.source_deployment.build
|
236
|
+
else None
|
237
|
+
)
|
238
|
+
code_reference = (
|
239
|
+
self.source_deployment.code_reference.to_model()
|
240
|
+
if self.source_deployment.code_reference
|
241
|
+
else None
|
242
|
+
)
|
243
|
+
else:
|
244
|
+
pipeline = None
|
245
|
+
build = None
|
246
|
+
code_reference = None
|
247
|
+
|
248
|
+
resources = RunTemplateResponseResources(
|
249
|
+
source_deployment=self.source_deployment.to_model()
|
250
|
+
if self.source_deployment
|
251
|
+
else None,
|
252
|
+
pipeline=pipeline,
|
253
|
+
build=build,
|
254
|
+
code_reference=code_reference,
|
255
|
+
tags=[t.tag.to_model() for t in self.tags],
|
256
|
+
)
|
257
|
+
|
258
|
+
return RunTemplateResponse(
|
259
|
+
id=self.id,
|
260
|
+
name=self.name,
|
261
|
+
body=body,
|
262
|
+
metadata=metadata,
|
263
|
+
resources=resources,
|
264
|
+
)
|
@@ -274,11 +274,18 @@ class StepRunSchema(NamedSchema, table=True):
|
|
274
274
|
if include_resources:
|
275
275
|
model_version = None
|
276
276
|
if full_step_config.config.model:
|
277
|
-
|
278
|
-
|
279
|
-
|
277
|
+
# TODO: Why is there no ID check similar to
|
278
|
+
# PipelineRunSchema.to_model()?
|
279
|
+
try:
|
280
|
+
model_version = (
|
281
|
+
full_step_config.config.model._get_model_version(
|
282
|
+
hydrate=False
|
283
|
+
)
|
280
284
|
)
|
281
|
-
|
285
|
+
except KeyError:
|
286
|
+
# Unable to find the model version, it was probably deleted
|
287
|
+
pass
|
288
|
+
|
282
289
|
resources = StepRunResponseResources(model_version=model_version)
|
283
290
|
|
284
291
|
return StepRunResponse(
|