#!/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 })