35 lines
692 B
Python
35 lines
692 B
Python
|
|
from abc import ABC, abstractmethod
|
||
|
|
from enum import StrEnum
|
||
|
|
|
||
|
|
from services.workflow.entities import WorkflowScheduleCFSPlanEntity
|
||
|
|
|
||
|
|
|
||
|
|
class SchedulerCommand(StrEnum):
|
||
|
|
"""
|
||
|
|
Scheduler command.
|
||
|
|
"""
|
||
|
|
|
||
|
|
RESOURCE_LIMIT_REACHED = "resource_limit_reached"
|
||
|
|
NONE = "none"
|
||
|
|
|
||
|
|
|
||
|
|
class CFSPlanScheduler(ABC):
|
||
|
|
"""
|
||
|
|
CFS plan scheduler.
|
||
|
|
"""
|
||
|
|
|
||
|
|
def __init__(self, plan: WorkflowScheduleCFSPlanEntity):
|
||
|
|
"""
|
||
|
|
Initialize the CFS plan scheduler.
|
||
|
|
|
||
|
|
Args:
|
||
|
|
plan: The CFS plan.
|
||
|
|
"""
|
||
|
|
self.plan = plan
|
||
|
|
|
||
|
|
@abstractmethod
|
||
|
|
def can_schedule(self) -> SchedulerCommand:
|
||
|
|
"""
|
||
|
|
Whether a workflow run can be scheduled.
|
||
|
|
"""
|