feat: run pinned pipelines and publish outputs
This commit is contained in:
@@ -158,6 +158,68 @@ class PipelinePreviewResponse(BaseModel):
|
||||
executor_version: str
|
||||
|
||||
|
||||
class PipelineRunPublicationRequest(BaseModel):
|
||||
target_datasource_ref: str | None = Field(default=None, max_length=500)
|
||||
name: str | None = Field(default=None, min_length=1, max_length=300)
|
||||
source_name: str | None = Field(
|
||||
default=None,
|
||||
min_length=1,
|
||||
max_length=120,
|
||||
pattern=r"^[A-Za-z_][A-Za-z0-9_]*$",
|
||||
)
|
||||
description: str | None = Field(default=None, max_length=4_000)
|
||||
freeze: bool = False
|
||||
frozen_label: str | None = Field(default=None, max_length=300)
|
||||
set_current: bool = True
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
@model_validator(mode="after")
|
||||
def validate_target(self) -> "PipelineRunPublicationRequest":
|
||||
if self.target_datasource_ref:
|
||||
return self
|
||||
if not self.name or not self.source_name:
|
||||
raise ValueError(
|
||||
"New publication targets require name and source_name."
|
||||
)
|
||||
return self
|
||||
|
||||
|
||||
class PipelineRunCreateRequest(BaseModel):
|
||||
revision: int | None = Field(default=None, ge=1)
|
||||
idempotency_key: str = Field(min_length=1, max_length=255)
|
||||
row_limit: int = Field(default=500, ge=1, le=500)
|
||||
publication: PipelineRunPublicationRequest | None = None
|
||||
|
||||
|
||||
class PipelineRunResponse(BaseModel):
|
||||
ref: str
|
||||
pipeline_id: str
|
||||
revision: int
|
||||
run_type: str
|
||||
status: Literal["running", "succeeded", "failed", "cancelled"]
|
||||
idempotency_key: str | None
|
||||
definition_hash: str
|
||||
executor_version: str
|
||||
source_fingerprints: list[dict[str, Any]]
|
||||
result_schema: list[PreviewColumn]
|
||||
diagnostics: list[DataflowDiagnostic]
|
||||
input_row_count: int
|
||||
output_row_count: int
|
||||
output_publication_ref: str | None
|
||||
output_datasource_ref: str | None
|
||||
output_materialization_ref: str | None
|
||||
error: str | None
|
||||
started_at: datetime
|
||||
finished_at: datetime | None
|
||||
created_by: str | None
|
||||
created_at: datetime
|
||||
replayed: bool = False
|
||||
|
||||
|
||||
class PipelineRunListResponse(BaseModel):
|
||||
runs: list[PipelineRunResponse]
|
||||
|
||||
|
||||
class PipelineDeleteResponse(BaseModel):
|
||||
deleted: bool
|
||||
pipeline_id: str
|
||||
@@ -210,6 +272,7 @@ class TabularSourceResponse(BaseModel):
|
||||
source_name: str
|
||||
name: str
|
||||
description: str | None
|
||||
mode: Literal["live", "cached", "static"]
|
||||
columns: list[TabularSourceColumnResponse]
|
||||
schema_version: str
|
||||
fingerprint: str
|
||||
|
||||
Reference in New Issue
Block a user