11from enum import IntEnum
22from typing import Any , TypedDict
3- from pydantic import BaseModel
3+ from pydantic import BaseModel , field_validator
44from mcsmapi .models .image import DockerConfig
55
66
@@ -218,7 +218,7 @@ def kill(self):
218218 def delete (self , deleteFile : bool = False ):
219219 """
220220 删除该实例
221-
221+
222222 :params deleteFile: 是否删除关联的文件
223223
224224 :returns: 被删除的实例的uuid
@@ -317,9 +317,9 @@ def files(
317317class InstanceCreateResult (BaseModel ):
318318 """实例创建结果"""
319319
320- instanceUuid : str = ""
320+ instanceUuid : str
321321 """实例UUID"""
322- config : InstanceConfig = InstanceConfig ()
322+ config : InstanceConfig
323323 """实例的配置信息"""
324324
325325
@@ -335,11 +335,17 @@ class InstanceSearchList(BaseModel):
335335 daemonId : str = ""
336336 """所属的节点UUID"""
337337
338- def __init__ (self , ** data : str ):
339- """实例化对象,并在每个实例中填充 daemonId"""
340- super ().__init__ (** data )
341- for instance in self .data :
342- instance .daemonId = self .daemonId
338+ @field_validator ("data" , mode = "before" )
339+ @classmethod
340+ def fill_daemon_id (cls , v : Any , info ) -> Any :
341+ """在验证 data 字段前填充 daemonId"""
342+ if isinstance (info .data , dict ):
343+ daemon_id = info .data .get ("daemonId" , "" )
344+ if isinstance (v , list ):
345+ for instance in v :
346+ if isinstance (instance , dict ):
347+ instance ["daemonId" ] = daemon_id
348+ return v
343349
344350
345351class UserInstancesList (BaseModel ):
0 commit comments