Complete restructure to modules.

Using modules and imports makes it much more modular
and managable. There are no 600 row files now
This commit is contained in:
2026-03-02 21:46:51 +01:00
parent fcf3643ff8
commit 10e6ae2347
24 changed files with 930 additions and 29537 deletions

0
cont/models/__init__.py Normal file
View File

38
cont/models/ciscoModel.py Normal file
View File

@@ -0,0 +1,38 @@
from dataclasses import dataclass
from typing import Optional, Annotated, Dict
@dataclass
class snmpPyCiscoData():
"""Dataclass for snmp data"""
hostname: str
powerDrawPSU1: int
voltagePSU1: int
inletTemp: float
exhaustTemp: float
cpu1Temp: float
uptimeS: int
uptimeH: float
# optional fields
uptimeD: float | None = None
cpu2Temp: float | None = None
powerDrawPSU2: int | None = None
voltagePSU2: int | None = None
def __str__(self):
return (
f"{self.hostname}\n"
f"PSU1 {self.powerDrawPSU1} Watts\n"
f"PSU2 {self.powerDrawPSU2} Watts\n"
f"PSU1 {self.voltagePSU1} Volts\n"
f"PSU2 {self.voltagePSU2} Volts\n"
f"Inlet {self.inletTemp} C\n"
f"Exhaust {self.exhaustTemp} C\n"
f"CPU1 {self.cpu1Temp} C\n"
f"CPU2 {self.cpu2Temp} C\n"
f"Uptime {self.uptimeS} Seconds\n"
f"Uptime {self.uptimeH} Hours\n"
f"Uptime {self.uptimeD} Days"
)

7
cont/models/fanModel.py Normal file
View File

@@ -0,0 +1,7 @@
from dataclasses import dataclass
from typing import Optional, Annotated, Dict
@dataclass
class idracFanStatus:
fans: Dict[str, int] | None = Dict[None, None] # name/index -> rpm

43
cont/models/idracModel.py Normal file
View File

@@ -0,0 +1,43 @@
from dataclasses import dataclass
from typing import Optional, Annotated, Dict
@dataclass
class snmpPyIDRACData():
"""Dataclass for snmp data"""
hostname: str
powerDrawPSU1: int
voltagePSU1: int
inletTemp: float
exhaustTemp: float
cpu1Temp: float
uptimeS: int
uptimeH: float
# optional fields
uptimeD: float | None = None
cpu2Temp: float | None = None
powerDrawPSU2: int | None = None
powerDrawBoard: int | None = None
voltagePSU2: int | None = None
def __str__(self):
return (
f"{self.hostname}\n"
f"PSU1 {self.powerDrawPSU1} Watts\n"
f"PSU2 {self.powerDrawPSU2} Watts\n"
f"Board {self.powerDrawBoard} Watts\n"
f"PSU1 {self.voltagePSU1} Volts\n"
f"PSU2 {self.voltagePSU2} Volts\n"
f"Inlet {self.inletTemp} C\n"
f"Exhaust {self.exhaustTemp} C\n"
f"CPU1 {self.cpu1Temp} C\n"
f"CPU2 {self.cpu2Temp} C\n"
f"Uptime {self.uptimeH} Hours\n"
f"Uptime {self.uptimeD} Days"
)

28
cont/models/sqlTable.py Normal file
View File

@@ -0,0 +1,28 @@
from sqlalchemy import Table, Column, MetaData, Integer, String, TIMESTAMP, BigInteger, Numeric, text
metadata = MetaData()
idracMeasurement = Table(
"IDRACmeasurement",
metadata,
Column("id", Integer, primary_key=True, autoincrement=True),
Column("time_stamp", TIMESTAMP, server_default=text("CURRENT_TIMESTAMP"), nullable=False),
Column("hostname", String(64), nullable=False),
Column("powerDrawPSU1", Numeric(7, 2)),
Column("powerDrawPSU2", Numeric(7, 2)),
Column("powerDrawBoard", Numeric(7, 2)),
Column("voltagePSU1", Numeric(7, 2)),
Column("voltagePSU2", Numeric(7, 2)),
Column("inletTemp", Numeric(5, 2)),
Column("exhaustTemp", Numeric(5, 2)),
Column("cpu1Temp", Numeric(5, 2)),
Column("cpu2Temp", Numeric(5, 2)),
Column("uptimeS", BigInteger),
Column("uptimeH", Numeric(8, 3)),
Column("uptimeD", Numeric(8, 3)),
)