8000 Add version and branching info to `DeploymentCreate` and `DeploymentU… · CodersSampling/prefect@385b8bd · GitHub
[go: up one dir, main page]

Skip to content

Commit 385b8bd

Browse files
authored
Add version and branching info to DeploymentCreate and DeploymentUpdate (PrefectHQ#17711)
1 parent f2077c7 commit 385b8bd

File tree

2 files changed

+71
-17
lines changed

2 files changed

+71
-17
lines changed

src/prefect/client/orchestration/_deployments/client.py

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from prefect.client.schemas.objects import (
3030
ConcurrencyOptions,
3131
DeploymentSchedule,
32+
VersionInfo,
3233
)
3334
from prefect.client.schemas.responses import (
3435
DeploymentResponse,
@@ -48,6 +49,7 @@ def create_deployment(
4849
flow_id: "UUID",
4950
name: str,
5051
version: str | None = None,
52+
version_info: "VersionInfo | None" = None,
5153
schedules: list["DeploymentScheduleCreate"] | None = None,
5254
concurrency_limit: int | None = None,
5355
concurrency_options: "ConcurrencyOptions | None" = None,
@@ -65,6 +67,9 @@ def create_deployment(
6567
pull_steps: list[dict[str, Any]] | None = None,
6668
enforce_parameter_schema: bool | None = None,
6769
job_variables: dict[str, Any] | None = None,
70+
branch: str | None = None,
71+
base: UUID | None = None,
72+
root: UUID | None = None,
6873
) -> "UUID":
6974
"""
7075
Create a deployment.
@@ -99,6 +104,7 @@ def create_deployment(
99104
flow_id=flow_id,
100105
name=name,
101106
version=version,
107+
version_info=version_info,
102108
parameters=dict(parameters or {}),
103109
tags=list(tags or []),
104110
work_queue_name=work_queue_name,
@@ -115,6 +121,9 @@ def create_deployment(
115121
concurrency_options=concurrency_options,
116122
pull_steps=pull_steps,
117123
enforce_parameter_schema=enforce_parameter_schema,
124+
branch=branch,
125+
base=base,
126+
root=root,
118127
)
119128

120129
if work_pool_name is not None:
@@ -123,20 +132,29 @@ def create_deployment(
123132
# Exclude newer fields that are not set to avoid compatibility issues
124133
exclude = {
125134
field
126-
for field in ["work_pool_name", "work_queue_name"]
135+
for field in [
136+
"work_pool_name",
137+
"work_queue_name",
138+
]
127139
if field not in deployment_create.model_fields_set
128140
}
129141

130-
if deployment_create.paused is None:
131-
exclude.add("paused")
132-
133-
if deployment_create.pull_steps is None:
134-
exclude.add("pull_steps")
142+
exclude_if_none = [
143+
"paused",
144+
"pull_steps",
145+
"enforce_parameter_schema",
146+
"version_info",
147+
"branch",
148+
"base",
149+
"root",
150+
]
135151

136-
if deployment_create.enforce_parameter_schema is None:
137-
exclude.add("enforce_parameter_schema")
152+
for field in exclude_if_none:
153+
if getattr(deployment_create, field) is None:
154+
exclude.add(field)
138155

139156
json = deployment_create.model_dump(mode="json", exclude=exclude)
157+
140158
response = self.request(
141159
"POST",
142160
"/deployments/",
@@ -593,6 +611,7 @@ async def create_deployment(
593611
flow_id: "UUID",
594612
name: str,
595613
version: str | None = None,
614+
version_info: "VersionInfo | None" = None,
596615
schedules: list["DeploymentScheduleCreate"] | None = None,
597616
concurrency_limit: int | None = None,
598617
concurrency_options: "ConcurrencyOptions | None" = None,
@@ -610,6 +629,9 @@ async def create_deployment(
610629
pull_steps: list[dict[str, Any]] | None = None,
611630
enforce_parameter_schema: bool | None = None,
612631
job_variables: dict[str, Any] | None = None,
632+
branch: str | None = None,
633+
base: UUID | None = None,
634+
root: UUID | None = None,
613635
) -> "UUID":
614636
"""
615637
Create a deployment.
@@ -644,6 +666,7 @@ async def create_deployment(
644666
flow_id=flow_id,
645667
name=name,
646668
version=version,
669+
version_info=version_info,
647670
parameters=dict(parameters or {}),
648671
tags=list(tags or []),
649672
work_queue_name=work_queue_name,
@@ -660,6 +683,9 @@ async def create_deployment(
660683
concurrency_options=concurrency_options,
661684
pull_steps=pull_steps,
662685
enforce_parameter_schema=enforce_parameter_schema,
686+
branch=branch,
687+
base=base,
688+
root=root,
663689
)
664690

665691
if work_pool_name is not None:
@@ -668,20 +694,29 @@ async def create_deployment(
668694
# Exclude newer fields that are not set to avoid compatibility issues
669695
exclude = {
670696
field
671-
for field in ["work_pool_name", "work_queue_name"]
697+
for field in [
698+
"work_pool_name",
699+
"work_queue_name",
700+
]
672701
if field not in deployment_create.model_fields_set
673702
}
674703

675-
if deployment_create.paused is None:
676-
exclude.add("paused")
677-
678-
if deployment_create.pull_steps is None:
679-
exclude.add("pull_steps")
704+
exclude_if_none = [
705+
"paused",
706+
"pull_steps",
707+
"enforce_parameter_schema",
708+
"version_info",
709+
"branch",
710+
"base",
711+
"root",
712+
]
680713

681-
if deployment_create.enforce_parameter_schema is None:
682-
exclude.add("enforce_parameter_schema")
714+
for field in exclude_if_none:
715+
if getattr(deployment_create, field) is None:
716+
exclude.add(field)
683717

684718
json = deployment_create.model_dump(mode="json", exclude=exclude)
719+
685720
response = await self.request(
686721
"POST",
687722
"/deployments/",

src/prefect/client/schemas/actions.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,13 +253,29 @@ def convert_to_strings(
253253
infrastructure_document_id: Optional[UUID] = Field(default=None)
254254
description: Optional[str] = Field(default=None)
255255
path: Optional[str] = Field(default=None)
256-
version: Optional[str] = Field(default=None)
257256
entrypoint: Optional[str] = Field(default=None)
258257
job_variables: dict[str, Any] = Field(
259258
default_factory=dict,
260259
description="Overrides to apply to flow run infrastructure at runtime.",
261260
)
262261

262+
# Versionining
263+
version: Optional[str] = Field(default=None)
264+
version_info: Optional[objects.VersionInfo] = Field(
265+
default=None, description="Version information for the deployment."
266+
)
267+
268+
# Branching
269+
branch: Optional[str] = Field(
270+
default=None, description="The branch of the deployment."
271+
)
272+
base: Optional[UUID] = Field(
273+
default=None, description="The base deployment of the deployment."
274+
)
275+
root: Optional[UUID] = Field(
276+
default=None, description="The root deployment of the deployment."
277+
)
278+
263279
def check_valid_configuration(self, base_job_template: dict[str, Any]) -> None:
264280
"""Check that the combination of base_job_template defaults
265281
and job_variables conforms to the specified schema.
@@ -289,6 +305,9 @@ def remove_old_fields(cls, values: dict[str, Any]) -> dict[str, Any]:
289305
return remove_old_deployment_fields(values)
290306

291307
version: Optional[str] = Field(default=None)
308+
version_info: Optional[objects.VersionInfo] = Field(
309+
default=None, description="Version information for the deployment."
310+
)
292311
description: Optional[str] = Field(default=None)
293312
parameters: Optional[dict[str, Any]] = Field(
294313
default=None,

0 commit comments

Comments
 (0)
0