fix node serialization (#1627)

* fix node serialization

* remove intermediate variable

* mypy fix
This commit is contained in:
Cheick Keita
2022-01-31 10:05:28 -08:00
committed by GitHub
parent dab0dba34f
commit 809db31186
2 changed files with 9 additions and 10 deletions

View File

@ -30,8 +30,7 @@ def get(req: func.HttpRequest) -> func.HttpResponse:
if isinstance(node, Error): if isinstance(node, Error):
return not_ok(node, context=request.machine_id) return not_ok(node, context=request.machine_id)
node_tasks = NodeTasks.get_by_machine_id(request.machine_id) node.tasks = [n for n in NodeTasks.get_by_machine_id(request.machine_id)]
node.tasks = [(t.task_id, t.state) for t in node_tasks]
node.messages = [ node.messages = [
x.message for x in NodeMessage.get_messages(request.machine_id) x.message for x in NodeMessage.get_messages(request.machine_id)
] ]

View File

@ -4,7 +4,7 @@
# Licensed under the MIT License. # Licensed under the MIT License.
from datetime import datetime from datetime import datetime
from typing import Any, Dict, Generic, List, Optional, Tuple, TypeVar, Union from typing import Any, Dict, Generic, List, Optional, TypeVar, Union
from uuid import UUID, uuid4 from uuid import UUID, uuid4
from pydantic import BaseModel, Field, root_validator, validator from pydantic import BaseModel, Field, root_validator, validator
@ -561,6 +561,12 @@ class NodeCommand(EnumModel):
stop_if_free: Optional[NodeCommandStopIfFree] stop_if_free: Optional[NodeCommandStopIfFree]
class NodeTasks(BaseModel):
machine_id: UUID
task_id: UUID
state: NodeTaskState = Field(default=NodeTaskState.init)
class NodeCommandEnvelope(BaseModel): class NodeCommandEnvelope(BaseModel):
command: NodeCommand command: NodeCommand
message_id: str message_id: str
@ -576,7 +582,7 @@ class Node(BaseModel):
machine_id: UUID machine_id: UUID
state: NodeState = Field(default=NodeState.init) state: NodeState = Field(default=NodeState.init)
scaleset_id: Optional[UUID] = None scaleset_id: Optional[UUID] = None
tasks: Optional[List[Tuple[UUID, NodeTaskState]]] = None tasks: Optional[List[NodeTasks]] = None
messages: Optional[List[NodeCommand]] = None messages: Optional[List[NodeCommand]] = None
heartbeat: Optional[datetime] heartbeat: Optional[datetime]
version: str = Field(default="1.0.0") version: str = Field(default="1.0.0")
@ -590,12 +596,6 @@ class ScalesetSummary(BaseModel):
state: ScalesetState state: ScalesetState
class NodeTasks(BaseModel):
machine_id: UUID
task_id: UUID
state: NodeTaskState = Field(default=NodeTaskState.init)
class AutoScaleConfig(BaseModel): class AutoScaleConfig(BaseModel):
image: str image: str
max_size: int = Field(default=1000, le=1000, ge=0) # max size of pool max_size: int = Field(default=1000, le=1000, ge=0) # max size of pool