from abc import ABC, abstractmethod from typing import List, Optional from omagent_core.engine.http.models.save_schedule_request import \ SaveScheduleRequest from omagent_core.engine.http.models.search_result_workflow_schedule_execution_model import \ SearchResultWorkflowScheduleExecutionModel from omagent_core.engine.http.models.workflow_schedule import WorkflowSchedule from omagent_core.engine.orkes.models.metadata_tag import MetadataTag class SchedulerClient(ABC): @abstractmethod def save_schedule(self, save_schedule_request: SaveScheduleRequest): pass @abstractmethod def get_schedule(self, name: str) -> (Optional[WorkflowSchedule], str): pass @abstractmethod def get_all_schedules( self, workflow_name: Optional[str] = None ) -> List[WorkflowSchedule]: pass @abstractmethod def get_next_few_schedule_execution_times( self, cron_expression: str, schedule_start_time: Optional[int] = None, schedule_end_time: Optional[int] = None, limit: Optional[int] = None, ) -> List[int]: pass @abstractmethod def delete_schedule(self, name: str): pass @abstractmethod def pause_schedule(self, name: str): pass @abstractmethod def pause_all_schedules(self): pass @abstractmethod def resume_schedule(self, name: str): pass @abstractmethod def resume_all_schedules(self): pass @abstractmethod def search_schedule_executions( self, start: Optional[int] = None, size: Optional[int] = None, sort: Optional[str] = None, free_text: Optional[str] = None, query: Optional[str] = None, ) -> SearchResultWorkflowScheduleExecutionModel: pass @abstractmethod def requeue_all_execution_records(self): pass @abstractmethod def set_scheduler_tags(self, tags: List[MetadataTag], name: str): pass @abstractmethod def get_scheduler_tags(self, name: str) -> List[MetadataTag]: pass @abstractmethod def delete_scheduler_tags( self, tags: List[MetadataTag], name: str ) -> List[MetadataTag]: pass