"""Event-log and monitoring-pipeline configuration models."""fromtypingimportList,OptionalfrompydanticimportBaseModel,ConfigDict,Field
[docs]classEventLogConfig(BaseModel):"""Project-level event log configuration for pipeline resource generation."""model_config=ConfigDict(populate_by_name=True)enabled:bool=Truecatalog:Optional[str]=Noneschema_:Optional[str]=Field(None,alias="schema")name_prefix:str=""name_suffix:str=""
[docs]classMonitoringMaterializedViewConfig(BaseModel):"""Configuration for a single monitoring materialized view."""name:strsql:Optional[str]=Nonesql_path:Optional[str]=None
[docs]classMonitoringConfig(BaseModel):"""Project-level monitoring pipeline configuration. Generates two artifacts: 1. A standalone notebook that runs N independent streaming queries (one per pipeline event log) appending into a user-created Delta table. 2. A DLT pipeline with materialized views only, reading from that Delta table. A Databricks Workflow job chains: notebook_task (union) → pipeline_task (MVs). """model_config=ConfigDict(populate_by_name=True)enabled:bool=Truepipeline_name:Optional[str]=None# default: {project_name}_event_log_monitoringcatalog:Optional[str]=None# default: event_log.catalogschema_:Optional[str]=Field(None,alias="schema")# default: event_log.schemastreaming_table:str="all_pipelines_event_log"# user-created Delta tablecheckpoint_path:str=""# streaming checkpoint base path (required when enabled)job_config_path:Optional[str]=(None# relative path to monitoring job config YAML (required when enabled))max_concurrent_streams:int=Field(10,ge=1,le=20)# ThreadPoolExecutor max_workersmaterialized_views:Optional[List[MonitoringMaterializedViewConfig]]=Noneenable_job_monitoring:bool=False