64 lines
1.8 KiB
Python

from typing import List, Optional
from pydantic import UUID4, BaseModel, ConfigDict, Field
from time import time_ns
class CPU(BaseModel):
model_config = ConfigDict()
current_time:int = Field(default_factory=time_ns)
time:int = Field()
user:int = Field()
system:int = Field()
count:int = Field()
class DiskFlows(BaseModel):
bytes:int = Field()
reqs:int = Field()
times:int = Field()
class Disk(BaseModel):
model_config = ConfigDict()
current_time:int = Field(default_factory=time_ns)
uuid:UUID4 = Field()
name:str = Field()
read:DiskFlows = Field()
write:DiskFlows = Field()
class MemorySwap(BaseModel):
swp_in:Optional[int] = Field(default=None, serialization_alias="in")
swp_out:Optional[int] = Field(default=None, serialization_alias="out")
class Memory(BaseModel):
model_config = ConfigDict()
current_time:int = Field()
available:Optional[int] = Field(default=None)
current:int = Field()
maximum:int = Field()
disk_caches:Optional[int] = Field(default=None)
rss:int = Field()
swap:MemorySwap = Field()
unused:Optional[int] = Field(default=None)
usable:Optional[int] = Field(default=None)
class InterfaceFlows(BaseModel):
bytes:int = Field()
drop:int = Field()
errs:int = Field()
pkts:int = Field()
class Interface(BaseModel):
model_config = ConfigDict()
uuid:UUID4 = Field()
current_time:int = Field(default_factory=time_ns)
name:str = Field()
rx:InterfaceFlows = Field()
tx:InterfaceFlows = Field()
class Stats(BaseModel):
company_id:UUID4 = Field()
datacenter_id:UUID4 = Field()
vm_id:UUID4 = Field()
cpu:CPU = Field()
memory:Memory = Field()
network:List[Interface] = Field()
disk:List[Disk] = Field()