buildgrid.server.scheduler.assigner module

class buildgrid.server.scheduler.assigner.SamplingConfig(sample_size: int, max_attempts: int = 1)

Bases: object

Configuration for sampling bots, used by BotAssignmentStrategy. If enabled, the assigner will sample a list of bots without locking them and choose the best one.

sample_size: int
max_attempts: int = 1
class buildgrid.server.scheduler.assigner.AssignByCapacity(kind: Literal['capacity'] = 'capacity', sampling: buildgrid.server.scheduler.assigner.SamplingConfig | None = None)

Bases: object

kind: Literal['capacity'] = 'capacity'
sampling: SamplingConfig | None = None
class buildgrid.server.scheduler.assigner.AssignByLocality(kind: Literal['locality'] = 'locality', sampling: buildgrid.server.scheduler.assigner.SamplingConfig | None = None, fallback: 'BotAssignmentStrategy' = AssignByCapacity(kind='capacity', sampling=None))

Bases: object

kind: Literal['locality'] = 'locality'
sampling: SamplingConfig | None = None
fallback: AssignByCapacity | AssignByLocality = AssignByCapacity(kind='capacity', sampling=None)
buildgrid.server.scheduler.assigner.create_bot_assignment_fn(strategy: AssignByCapacity | AssignByLocality, scheduler: Scheduler, assigner_name: str) BotAssignmentFn
class buildgrid.server.scheduler.assigner.JobAssigner(*args, **kwargs)

Bases: Protocol

start() None
stop() None
begin(shutdown_requested: Event) None
class buildgrid.server.scheduler.assigner.PriorityAgeJobAssigner(scheduler: Scheduler, name: str, interval: float, priority_percentage: int = 100, jitter_factor: float = 1, failure_backoff: float = 5.0, busy_sleep_factor: float = 0.01, instance_names: frozenset[str] | None = None, bot_assignment_strategy: AssignByCapacity | AssignByLocality = AssignByCapacity(kind='capacity', sampling=None))

Bases: object

start() None
stop() None
begin(shutdown_requested: Event) None
class buildgrid.server.scheduler.assigner.AssignerConfig(*args, **kwargs)

Bases: Protocol

count: int
interval: float
generate_assigners(scheduler: Scheduler) Generator[JobAssigner, None, None]

Generate the actual JobAssigner objects defined by this configuration.

class buildgrid.server.scheduler.assigner.PriorityAgeAssignerConfig(name: str, count: int, interval: float, priority_assignment_percentage: int = 100, failure_backoff: float = 5.0, jitter_factor: float = 1.0, busy_sleep_factor: float = 0.01, instance_names: frozenset[str] | None = None, bot_assignment_strategy: buildgrid.server.scheduler.assigner.AssignByCapacity | buildgrid.server.scheduler.assigner.AssignByLocality = AssignByCapacity(kind='capacity', sampling=None))

Bases: object

name: str
count: int
interval: float
priority_assignment_percentage: int = 100
failure_backoff: float = 5.0
jitter_factor: float = 1.0
busy_sleep_factor: float = 0.01
instance_names: frozenset[str] | None = None
bot_assignment_strategy: AssignByCapacity | AssignByLocality = AssignByCapacity(kind='capacity', sampling=None)
generate_assigners(scheduler: Scheduler) Generator[PriorityAgeJobAssigner, None, None]