add event for scaleset state updates (#882)

This moves all scaleset state updates through `Scaleset.set_state` and adds a new event EventScalesetStateUpdated.
This commit is contained in:
bmc-msft
2021-05-13 17:23:02 -04:00
committed by GitHub
parent 372c194f7a
commit cb5e786bcd
7 changed files with 146 additions and 32 deletions

View File

@ -12,6 +12,7 @@ from onefuzztypes.enums import (
ContainerType,
ErrorCode,
NodeState,
ScalesetState,
TaskState,
TaskType,
)
@ -35,6 +36,7 @@ from onefuzztypes.events import (
EventScalesetCreated,
EventScalesetDeleted,
EventScalesetFailed,
EventScalesetStateUpdated,
EventTaskCreated,
EventTaskFailed,
EventTaskHeartbeat,
@ -176,6 +178,11 @@ def main() -> None:
),
),
EventScalesetDeleted(scaleset_id=UUID(int=0), pool_name=PoolName("example")),
EventScalesetStateUpdated(
scaleset_id=UUID(int=0),
pool_name=PoolName("example"),
state=ScalesetState.init,
),
EventJobCreated(
job_id=UUID(int=0),
config=JobConfig(

View File

@ -10,7 +10,7 @@ from uuid import UUID, uuid4
from pydantic import BaseModel, Field
from .enums import OS, Architecture, NodeState, TaskState, TaskType
from .enums import OS, Architecture, NodeState, ScalesetState, TaskState, TaskType
from .models import (
AutoScaleConfig,
Error,
@ -150,6 +150,12 @@ class EventNodeDeleted(BaseEvent):
pool_name: PoolName
class EventScalesetStateUpdated(BaseEvent):
scaleset_id: UUID
pool_name: PoolName
state: ScalesetState
class EventNodeStateUpdated(BaseEvent):
machine_id: UUID
scaleset_id: Optional[UUID]
@ -192,6 +198,7 @@ Event = Union[
EventScalesetFailed,
EventScalesetCreated,
EventScalesetDeleted,
EventScalesetStateUpdated,
EventTaskFailed,
EventTaskStateUpdated,
EventTaskCreated,
@ -218,6 +225,7 @@ class EventType(Enum):
scaleset_created = "scaleset_created"
scaleset_deleted = "scaleset_deleted"
scaleset_failed = "scaleset_failed"
scaleset_state_updated = "scaleset_state_updated"
task_created = "task_created"
task_failed = "task_failed"
task_state_updated = "task_state_updated"
@ -245,6 +253,7 @@ EventTypeMap = {
EventType.scaleset_created: EventScalesetCreated,
EventType.scaleset_deleted: EventScalesetDeleted,
EventType.scaleset_failed: EventScalesetFailed,
EventType.scaleset_state_updated: EventScalesetStateUpdated,
EventType.task_created: EventTaskCreated,
EventType.task_failed: EventTaskFailed,
EventType.task_state_updated: EventTaskStateUpdated,