towerops/lib/towerops/snmp/profiles/vendors/inovonics.ex
2026-01-22 11:51:35 -06:00

58 lines
1.3 KiB
Elixir

defmodule Towerops.Snmp.Profiles.Vendors.Inovonics do
@moduledoc """
SNMP profile for Inovonics devices.
Auto-generated from YAML profiles. Add vendor-specific OIDs as needed.
"""
@behaviour Towerops.Snmp.Profiles.Vendors.Vendor
alias Towerops.Snmp.Client
alias Towerops.Snmp.Profiles.Vendors.Vendor
# Enterprise OID: 1.3.6.1.4.1.42111
@impl true
def profile_names, do: ["aaron"]
@impl true
def detect_hardware(client_opts) do
case Client.get(client_opts, "1.3.6.1.2.1.1.1.0") do
{:ok, descr} when is_binary(descr) ->
parse_hardware_from_descr(descr)
_ ->
nil
end
end
defp parse_hardware_from_descr(descr) do
# For now, return first line or word from sysDescr
descr
|> String.split(~r/[\r\n]/)
|> List.first()
|> case do
nil -> nil
line -> String.slice(line, 0, 64)
end
end
@impl true
def wireless_oid_defs do
[
# Standard HOST-RESOURCES-MIB CPU
%{
oid: "1.3.6.1.2.1.25.3.3.1.2.1",
sensor_descr: "CPU Load",
sensor_type: "load",
sensor_unit: "%",
sensor_divisor: 1
}
]
end
@impl true
def discover_wireless_sensors(client_opts) do
Vendor.fetch_sensors(wireless_oid_defs(), client_opts)
end
end