69 lines
2.9 KiB
Python
69 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from typing import Self
|
|
from Models.IterationModel import InterfaceModel, IterationModel
|
|
from Abstracts.DispatcherAbstract import DispatcherAbstract
|
|
from Abstracts.DatabaseAbstract import DatabaseAbstract
|
|
|
|
class AgentsDispatcher(DispatcherAbstract):
|
|
|
|
def save(self:Self, iteration:IterationModel) -> None:
|
|
|
|
database:DatabaseAbstract = self.nucelar_monitor.databases.get("sql_server")
|
|
interface:InterfaceModel
|
|
|
|
database.query((
|
|
"execute dbo.set_machine_data " +
|
|
"{key}, {candle_start}, {candle_end}, {candle_interations}, " +
|
|
"{ram_total}, {ram_in}, {ram_out}, {ram_minimum}, {ram_maximum}, " +
|
|
"{ram_average}, {cpu_in}, {cpu_out}, {cpu_minimum}, {cpu_maximum}, " +
|
|
"{cpu_average}"
|
|
), {
|
|
"key" : iteration.key,
|
|
"candle_start" : iteration.candle_time.start,
|
|
"candle_end" : iteration.candle_time.end,
|
|
"candle_interations" : iteration.iterations,
|
|
"ram_total" : iteration.memory.total,
|
|
"ram_in" : iteration.memory._in,
|
|
"ram_out" : iteration.memory.out,
|
|
"ram_minimum" : iteration.memory.minimum,
|
|
"ram_maximum" : iteration.memory.maximum,
|
|
"ram_average" : iteration.memory.average,
|
|
"cpu_in" : iteration.cpu._in,
|
|
"cpu_out" : iteration.cpu.out,
|
|
"cpu_minimum" : iteration.cpu.minimum,
|
|
"cpu_maximum" : iteration.cpu.maximum,
|
|
"cpu_average" : iteration.cpu.average
|
|
})
|
|
|
|
for interface in iteration.interfaces:
|
|
|
|
id:int = int(database.query((
|
|
"execute dbo.set_machine_interface_data " +
|
|
"{key}, {name}, {is_ipv6}, {ip}, {mask}, {mounted}, @id output"
|
|
), {
|
|
"key" : iteration.key,
|
|
"name" : interface.name,
|
|
"is_ipv6" : interface.is_ipv6,
|
|
"ip" : interface.ip,
|
|
"mask" : interface.mask,
|
|
"mounted" : True
|
|
}).variables["id"])
|
|
_type:str
|
|
|
|
for _type in ("received", "transmitted"):
|
|
database.query((
|
|
"execute dbo.set_machine_interface_traffic " +
|
|
"{id}, {type}, {candle_start}, {candle_end}, " +
|
|
"{candle_interations}, {bytes}, {packets}, {errors}"
|
|
), {
|
|
"id" : id,
|
|
"type" : _type,
|
|
"candle_start" : iteration.candle_time.start,
|
|
"candle_end" : iteration.candle_time.end,
|
|
"candle_interations" : iteration.iterations,
|
|
"bytes" : getattr(interface, _type).bytes,
|
|
"packets" : getattr(interface, _type).packets,
|
|
"errors" : getattr(interface, _type).errors
|
|
}) |