#!/usr/bin/env python3
from sys import argv

from hnmp import SNMP

snmp = SNMP(argv[2], community=argv[3])

single_value_metrics_int_oids = {
    'cpu-load': '1.3.6.1.2.1.25.3.3.1.2.1',
    'cpu-temperature': '1.3.6.1.4.1.14988.1.1.3.11.0',
    'fan1-speed': '1.3.6.1.4.1.14988.1.1.3.17.0',
    'fan2-speed': '1.3.6.1.4.1.14988.1.1.3.18.0',
    'power-consumption': '1.3.6.1.4.1.14988.1.1.3.12.0',
    #'psu1-state': '1.3.6.1.4.1.14988.1.1.3.15.0',
    'temperature': '1.3.6.1.4.1.14988.1.1.3.10.0',
}

single_value_metrics_int_values = {
    key: snmp.get(oid)
    for key, oid in single_value_metrics_int_oids.items()
}

formatted_values = sorted([
    f"{key}={value}i"
    for key, value in single_value_metrics_int_values.items()
    if value
])

print("mikrotik,host={host} {values}".format(
    host=argv[1],
    values=",".join(formatted_values),
))


table = snmp.table(
    "1.3.6.1.4.1.14988.1.1.15.1.1",
    columns={
        2: "interface",
        #3: "status",
        4: "voltage",
        5: "current",
        6: "power",
    },
    fetch_all_columns=False,
)

for row in table.rows:
    print(row)
    interface_name = row['interface']
    values = []
    for column, value in row.items():
        if column == "interface" or not value:
            continue
        values.append("{}={}i".format(column, value))

    print("mikrotik,interface={interface},host={host} {values}".format(
        host=argv[1],
        interface=interface_name,
        values=",".join(values),
    ))
