94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import datetime
|
|
from typing import Self
|
|
|
|
class CPUModel:
|
|
def __init__(self:Self,
|
|
_in:float,
|
|
_out:float,
|
|
minimum:float,
|
|
maximum:float,
|
|
average:float
|
|
) -> None:
|
|
self._in:float = _in
|
|
self.out:float = _out
|
|
self.minimum:float = minimum
|
|
self.maximum:float = maximum
|
|
self.average:float = average
|
|
|
|
class MemoryModel:
|
|
def __init__(self:Self,
|
|
total:int,
|
|
_in:int,
|
|
_out:int,
|
|
minimum:int,
|
|
maximum:int,
|
|
average:int
|
|
) -> None:
|
|
self.total:int = total
|
|
self._in:int = _in
|
|
self.out:int = _out
|
|
self.minimum:int = minimum
|
|
self.maximum:int = maximum
|
|
self.average:int = int(average)
|
|
|
|
class NetUseModel:
|
|
def __init__(self:Self, _bytes:int, packets:int, errors:int) -> None:
|
|
self.bytes:int = _bytes
|
|
self.packets:int = packets
|
|
self.errors:int = errors
|
|
|
|
class InterfaceModel:
|
|
def __init__(self:Self,
|
|
position:int,
|
|
name:str,
|
|
is_ipv6:bool,
|
|
ip:str,
|
|
mask:int,
|
|
received:NetUseModel,
|
|
transmitted:NetUseModel
|
|
) -> None:
|
|
self.position:int = position
|
|
self.name:str = name
|
|
self.is_ipv6:bool = is_ipv6
|
|
self.ip:str = ip
|
|
self.mask:int = mask
|
|
self.name:str = name
|
|
self.received:NetUseModel = received
|
|
self.transmitted:NetUseModel = transmitted
|
|
|
|
class DiskModel:
|
|
def __init__(self:Self, name:str, total:int, free:int, mount:str|None) -> None:
|
|
self.name:str = name
|
|
self.total:int = total
|
|
self.free:int = free
|
|
self.mount:str|None = mount
|
|
|
|
class CandleTimeModel:
|
|
def __init__(self:Self, start:int, end:int) -> None:
|
|
self.start:datetime.datetime = datetime.datetime.fromtimestamp(start)
|
|
self.end:datetime.datetime = datetime.datetime.fromtimestamp(end)
|
|
|
|
class IterationModel:
|
|
def __init__(self:Self,
|
|
key:str,
|
|
hostnames:list[str],
|
|
domain:str|None,
|
|
interfaces:list[InterfaceModel],
|
|
disks:list[DiskModel],
|
|
iterations:int,
|
|
candle_time:CandleTimeModel,
|
|
cpu:CPUModel,
|
|
memory:MemoryModel
|
|
) -> None:
|
|
self.key:str = key
|
|
self.hostnames:list[str] = hostnames
|
|
self.domain:str|None = domain
|
|
self.interfaces:list[InterfaceModel] = interfaces
|
|
self.disks:list[DiskModel] = disks
|
|
self.iterations:int = iterations
|
|
self.candle_time:CandleTimeModel = candle_time
|
|
self.cpu:CPUModel = cpu
|
|
self.memory:MemoryModel = memory |