more tests
This commit is contained in:
parent
155b38ab94
commit
218b99972e
290 changed files with 23528 additions and 249 deletions
374
lib/mix/tasks/gen_vendor_modules.ex
Normal file
374
lib/mix/tasks/gen_vendor_modules.ex
Normal file
|
|
@ -0,0 +1,374 @@
|
||||||
|
defmodule Mix.Tasks.GenVendorModules do
|
||||||
|
@shortdoc "Generate vendor module skeletons from YAML profiles"
|
||||||
|
|
||||||
|
@moduledoc """
|
||||||
|
Generates vendor module skeletons from YAML profiles.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
mix gen_vendor_modules [--dry-run] [--group GROUP]
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
* `--dry-run` - Show what would be generated without creating files
|
||||||
|
* `--group GROUP` - Only generate for a specific group/vendor
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
# Generate all missing vendor modules
|
||||||
|
mix gen_vendor_modules
|
||||||
|
|
||||||
|
# Preview what would be generated
|
||||||
|
mix gen_vendor_modules --dry-run
|
||||||
|
|
||||||
|
# Generate only for a specific vendor
|
||||||
|
mix gen_vendor_modules --group cisco
|
||||||
|
"""
|
||||||
|
|
||||||
|
use Mix.Task
|
||||||
|
|
||||||
|
@profiles_dir "priv/profiles/os_detection"
|
||||||
|
@vendors_dir "lib/towerops/snmp/profiles/vendors"
|
||||||
|
|
||||||
|
# Filename prefix to vendor mapping for profiles without group field
|
||||||
|
@filename_vendor_map %{
|
||||||
|
"cisco" => "cisco",
|
||||||
|
"juniper" => "juniper",
|
||||||
|
"junos" => "juniper",
|
||||||
|
"hp" => "hp",
|
||||||
|
"dell" => "dell",
|
||||||
|
"ibm" => "ibm",
|
||||||
|
"netgear" => "netgear",
|
||||||
|
"dlink" => "dlink",
|
||||||
|
"d-link" => "dlink",
|
||||||
|
"tp-link" => "tplink",
|
||||||
|
"tplink" => "tplink",
|
||||||
|
"netapp" => "netapp",
|
||||||
|
"synology" => "synology",
|
||||||
|
"qnap" => "qnap",
|
||||||
|
"vmware" => "vmware",
|
||||||
|
"palo" => "paloalto",
|
||||||
|
"panos" => "paloalto",
|
||||||
|
"fortinet" => "fortinet",
|
||||||
|
"forti" => "fortinet",
|
||||||
|
"checkpoint" => "checkpoint",
|
||||||
|
"sonic" => "sonicwall",
|
||||||
|
"sonicwall" => "sonicwall",
|
||||||
|
"opengear" => "opengear",
|
||||||
|
"raritan" => "raritan",
|
||||||
|
"eaton" => "eaton",
|
||||||
|
"liebert" => "liebert",
|
||||||
|
"cyberpower" => "cyberpower",
|
||||||
|
"tripp" => "tripplite",
|
||||||
|
"axis" => "axis",
|
||||||
|
"hikvision" => "hikvision",
|
||||||
|
"avaya" => "avaya",
|
||||||
|
"polycom" => "polycom",
|
||||||
|
"yealink" => "yealink",
|
||||||
|
"mitel" => "mitel",
|
||||||
|
"riverbed" => "riverbed",
|
||||||
|
"citrix" => "citrix",
|
||||||
|
"f5" => "f5",
|
||||||
|
"a10" => "a10",
|
||||||
|
"infoblox" => "infoblox",
|
||||||
|
"bluecoat" => "bluecoat",
|
||||||
|
"barracuda" => "barracuda",
|
||||||
|
"aruba" => "aruba",
|
||||||
|
"ruckus" => "ruckus"
|
||||||
|
}
|
||||||
|
|
||||||
|
@impl Mix.Task
|
||||||
|
def run(args) do
|
||||||
|
{opts, _, _} = OptionParser.parse(args, switches: [dry_run: :boolean, group: :string])
|
||||||
|
dry_run = Keyword.get(opts, :dry_run, false)
|
||||||
|
filter_group = Keyword.get(opts, :group)
|
||||||
|
|
||||||
|
# Get existing vendors and covered profiles
|
||||||
|
existing_vendors = get_existing_vendors()
|
||||||
|
covered_profiles = get_covered_profiles()
|
||||||
|
IO.puts("Found #{length(existing_vendors)} existing vendor modules")
|
||||||
|
IO.puts("Found #{length(covered_profiles)} profiles already covered")
|
||||||
|
|
||||||
|
# Parse all YAML profiles
|
||||||
|
profiles = parse_yaml_profiles()
|
||||||
|
IO.puts("Found #{length(profiles)} YAML profiles")
|
||||||
|
|
||||||
|
# Group profiles by vendor
|
||||||
|
grouped = group_profiles(profiles)
|
||||||
|
IO.puts("Grouped into #{map_size(grouped)} vendors")
|
||||||
|
|
||||||
|
# Filter if requested
|
||||||
|
grouped =
|
||||||
|
if filter_group do
|
||||||
|
Map.take(grouped, [filter_group])
|
||||||
|
else
|
||||||
|
grouped
|
||||||
|
end
|
||||||
|
|
||||||
|
# Filter out existing vendors and groups where all profiles are already covered
|
||||||
|
new_vendors =
|
||||||
|
grouped
|
||||||
|
|> Enum.reject(fn {vendor, vendor_profiles} ->
|
||||||
|
module_name = vendor_to_module_name(vendor)
|
||||||
|
module_exists = module_name in existing_vendors
|
||||||
|
|
||||||
|
# Check if all profiles in this group are already covered
|
||||||
|
profile_names = Enum.map(vendor_profiles, & &1.os)
|
||||||
|
all_covered = Enum.all?(profile_names, &(&1 in covered_profiles))
|
||||||
|
|
||||||
|
module_exists or all_covered
|
||||||
|
end)
|
||||||
|
|> Enum.map(fn {vendor, vendor_profiles} ->
|
||||||
|
# Filter out profiles that are already covered
|
||||||
|
uncovered = Enum.reject(vendor_profiles, &(&1.os in covered_profiles))
|
||||||
|
{vendor, uncovered}
|
||||||
|
end)
|
||||||
|
|> Enum.reject(fn {_vendor, profiles} -> Enum.empty?(profiles) end)
|
||||||
|
|> Map.new()
|
||||||
|
|
||||||
|
IO.puts("#{map_size(new_vendors)} new vendors to generate")
|
||||||
|
|
||||||
|
if map_size(new_vendors) == 0 do
|
||||||
|
IO.puts("\nNo new vendors to generate!")
|
||||||
|
:ok
|
||||||
|
else
|
||||||
|
Enum.each(new_vendors, fn {vendor, vendor_profiles} ->
|
||||||
|
generate_vendor_module(vendor, vendor_profiles, dry_run)
|
||||||
|
end)
|
||||||
|
|
||||||
|
print_instructions(new_vendors, dry_run)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp print_instructions(new_vendors, dry_run) do
|
||||||
|
if !dry_run do
|
||||||
|
IO.puts("\n\nGenerated #{map_size(new_vendors)} vendor modules.")
|
||||||
|
IO.puts("Run `mix compile` to check for errors.")
|
||||||
|
IO.puts("Run `mix test` to verify.")
|
||||||
|
IO.puts("\nDon't forget to:")
|
||||||
|
IO.puts(" 1. Add aliases to registry.ex")
|
||||||
|
IO.puts(" 2. Add vendors to @vendors list in registry.ex")
|
||||||
|
IO.puts(" 3. Write tests for each vendor")
|
||||||
|
IO.puts(" 4. Add vendor-specific OIDs if available")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp get_existing_vendors do
|
||||||
|
"#{@vendors_dir}/*.ex"
|
||||||
|
|> Path.wildcard()
|
||||||
|
|> Enum.map(&Path.basename(&1, ".ex"))
|
||||||
|
|> Enum.reject(&(&1 in ["registry", "vendor"]))
|
||||||
|
|> Enum.map(&Macro.camelize/1)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp get_covered_profiles do
|
||||||
|
# Get all profile names already handled by existing vendor modules
|
||||||
|
# This requires the application to be started
|
||||||
|
_ = Application.ensure_all_started(:towerops)
|
||||||
|
|
||||||
|
Towerops.Snmp.Profiles.Vendors.Registry.list_profile_names()
|
||||||
|
rescue
|
||||||
|
_ -> []
|
||||||
|
end
|
||||||
|
|
||||||
|
defp parse_yaml_profiles do
|
||||||
|
"#{@profiles_dir}/*.yaml"
|
||||||
|
|> Path.wildcard()
|
||||||
|
|> Enum.map(&parse_yaml_file/1)
|
||||||
|
|> Enum.reject(&is_nil/1)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp parse_yaml_file(path) do
|
||||||
|
case YamlElixir.read_from_file(path) do
|
||||||
|
{:ok, data} when is_map(data) ->
|
||||||
|
build_profile_map(data, path)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp build_profile_map(data, path) do
|
||||||
|
os = Map.get(data, "os")
|
||||||
|
|
||||||
|
if os do
|
||||||
|
%{
|
||||||
|
os: os,
|
||||||
|
group: Map.get(data, "group"),
|
||||||
|
text: Map.get(data, "text"),
|
||||||
|
sys_object_ids: extract_sys_object_ids(data),
|
||||||
|
filename: Path.basename(path, ".yaml")
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp extract_sys_object_ids(data) do
|
||||||
|
data
|
||||||
|
|> Map.get("discovery", [])
|
||||||
|
|> List.wrap()
|
||||||
|
|> Enum.flat_map(&get_sys_object_id_list/1)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp get_sys_object_id_list(%{"sysObjectID" => oids}) when is_list(oids), do: oids
|
||||||
|
defp get_sys_object_id_list(_), do: []
|
||||||
|
|
||||||
|
defp group_profiles(profiles) do
|
||||||
|
profiles
|
||||||
|
|> Enum.group_by(&determine_vendor/1)
|
||||||
|
|> Enum.reject(fn {vendor, _} -> vendor == nil end)
|
||||||
|
|> Map.new()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp determine_vendor(%{group: group}) when is_binary(group) and group != "" do
|
||||||
|
String.downcase(group)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp determine_vendor(%{filename: filename}) do
|
||||||
|
infer_vendor_from_filename(filename)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp infer_vendor_from_filename(filename) do
|
||||||
|
Enum.find_value(@filename_vendor_map, fn {prefix, vendor} ->
|
||||||
|
if String.starts_with?(filename, prefix) or String.contains?(filename, prefix) do
|
||||||
|
vendor
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp vendor_to_module_name(vendor) do
|
||||||
|
name =
|
||||||
|
vendor
|
||||||
|
|> String.replace(~r/[^a-z0-9]+/i, "_")
|
||||||
|
|> String.trim("_")
|
||||||
|
|> Macro.camelize()
|
||||||
|
|
||||||
|
# Prefix with "N" if starts with a number (e.g., "4rf" -> "N4rf")
|
||||||
|
if String.match?(name, ~r/^[0-9]/) do
|
||||||
|
"N#{name}"
|
||||||
|
else
|
||||||
|
name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp vendor_to_filename(vendor) do
|
||||||
|
name =
|
||||||
|
vendor
|
||||||
|
|> String.replace(~r/[^a-z0-9]+/i, "_")
|
||||||
|
|> String.downcase()
|
||||||
|
|> String.trim("_")
|
||||||
|
|
||||||
|
# Prefix with "n" if starts with a number
|
||||||
|
if String.match?(name, ~r/^[0-9]/) do
|
||||||
|
"n#{name}"
|
||||||
|
else
|
||||||
|
name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp generate_vendor_module(vendor, profiles, dry_run) do
|
||||||
|
module_name = vendor_to_module_name(vendor)
|
||||||
|
filename = vendor_to_filename(vendor)
|
||||||
|
profile_names = profiles |> Enum.map(& &1.os) |> Enum.sort() |> Enum.uniq()
|
||||||
|
|
||||||
|
# Get enterprise OID from first sysObjectID if available
|
||||||
|
enterprise_oid = extract_enterprise_oid(profiles)
|
||||||
|
|
||||||
|
content = generate_module_content(module_name, profile_names, enterprise_oid, vendor)
|
||||||
|
|
||||||
|
if dry_run do
|
||||||
|
IO.puts("\n--- #{filename}.ex (#{module_name}) ---")
|
||||||
|
IO.puts(" Profiles: #{Enum.join(profile_names, ", ")}")
|
||||||
|
IO.puts(" Enterprise OID: #{enterprise_oid || "none"}")
|
||||||
|
else
|
||||||
|
path = "#{@vendors_dir}/#{filename}.ex"
|
||||||
|
File.write!(path, content)
|
||||||
|
IO.puts("Generated: #{path}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp extract_enterprise_oid(profiles) do
|
||||||
|
profiles
|
||||||
|
|> Enum.flat_map(& &1.sys_object_ids)
|
||||||
|
|> Enum.find_value(fn oid ->
|
||||||
|
# Parse enterprise OID from sysObjectID pattern like ".1.3.6.1.4.1.9."
|
||||||
|
case Regex.run(~r/\.?1\.3\.6\.1\.4\.1\.(\d+)/, oid) do
|
||||||
|
[_, enterprise] -> "1.3.6.1.4.1.#{enterprise}"
|
||||||
|
_ -> nil
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp generate_module_content(module_name, profile_names, enterprise_oid, vendor) do
|
||||||
|
profiles_list = inspect(profile_names, pretty: true, limit: :infinity)
|
||||||
|
|
||||||
|
enterprise_comment =
|
||||||
|
if enterprise_oid do
|
||||||
|
" # Enterprise OID: #{enterprise_oid}"
|
||||||
|
else
|
||||||
|
" # Enterprise OID: unknown - uses standard MIB OIDs"
|
||||||
|
end
|
||||||
|
|
||||||
|
"""
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.#{module_name} do
|
||||||
|
@moduledoc \"\"\"
|
||||||
|
SNMP profile for #{String.capitalize(vendor)} 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_comment}
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: #{profiles_list}
|
||||||
|
|
||||||
|
@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
|
||||||
|
# TODO: Add vendor-specific hardware detection
|
||||||
|
# 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
|
||||||
|
}
|
||||||
|
# TODO: Add vendor-specific OIDs
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def discover_wireless_sensors(client_opts) do
|
||||||
|
Vendor.fetch_sensors(wireless_oid_defs(), client_opts)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
"""
|
||||||
|
end
|
||||||
|
end
|
||||||
209
lib/mix/tasks/gen_vendor_tests.ex
Normal file
209
lib/mix/tasks/gen_vendor_tests.ex
Normal file
|
|
@ -0,0 +1,209 @@
|
||||||
|
defmodule Mix.Tasks.GenVendorTests do
|
||||||
|
@shortdoc "Generate test files for vendor modules"
|
||||||
|
|
||||||
|
@moduledoc """
|
||||||
|
Generates test files for vendor modules that don't have tests.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
mix gen_vendor_tests [--dry-run]
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
* `--dry-run` - Show what would be generated without creating files
|
||||||
|
"""
|
||||||
|
|
||||||
|
use Mix.Task
|
||||||
|
|
||||||
|
@vendors_dir "lib/towerops/snmp/profiles/vendors"
|
||||||
|
@tests_dir "test/towerops/snmp/profiles/vendors"
|
||||||
|
|
||||||
|
@impl Mix.Task
|
||||||
|
def run(args) do
|
||||||
|
{opts, _, _} = OptionParser.parse(args, switches: [dry_run: :boolean])
|
||||||
|
dry_run = Keyword.get(opts, :dry_run, false)
|
||||||
|
|
||||||
|
# Get all vendor modules (excluding registry and vendor behaviour)
|
||||||
|
vendor_files =
|
||||||
|
"#{@vendors_dir}/*.ex"
|
||||||
|
|> Path.wildcard()
|
||||||
|
|> Enum.map(&Path.basename(&1, ".ex"))
|
||||||
|
|> Enum.reject(&(&1 in ["registry", "vendor"]))
|
||||||
|
|
||||||
|
# Get existing tests
|
||||||
|
existing_tests =
|
||||||
|
"#{@tests_dir}/*_test.exs"
|
||||||
|
|> Path.wildcard()
|
||||||
|
|> Enum.map(&Path.basename(&1, "_test.exs"))
|
||||||
|
|
||||||
|
# Find vendors without tests
|
||||||
|
vendors_without_tests =
|
||||||
|
vendor_files
|
||||||
|
|> Enum.reject(&(&1 in existing_tests))
|
||||||
|
|> Enum.sort()
|
||||||
|
|
||||||
|
IO.puts("Found #{length(vendor_files)} vendor modules")
|
||||||
|
IO.puts("Found #{length(existing_tests)} existing tests")
|
||||||
|
IO.puts("#{length(vendors_without_tests)} vendors need tests")
|
||||||
|
|
||||||
|
if vendors_without_tests == [] do
|
||||||
|
IO.puts("\nAll vendor modules have tests!")
|
||||||
|
:ok
|
||||||
|
else
|
||||||
|
Enum.each(vendors_without_tests, fn vendor_file ->
|
||||||
|
generate_vendor_test(vendor_file, dry_run)
|
||||||
|
end)
|
||||||
|
|
||||||
|
if !dry_run do
|
||||||
|
IO.puts("\n\nGenerated #{length(vendors_without_tests)} test files.")
|
||||||
|
IO.puts("Run `mix test test/towerops/snmp/profiles/vendors/` to verify.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp generate_vendor_test(vendor_file, dry_run) do
|
||||||
|
module_name = Macro.camelize(vendor_file)
|
||||||
|
|
||||||
|
# Read the vendor module to get profile names
|
||||||
|
vendor_path = "#{@vendors_dir}/#{vendor_file}.ex"
|
||||||
|
profile_names = extract_profile_names(vendor_path)
|
||||||
|
|
||||||
|
content = generate_test_content(module_name, profile_names)
|
||||||
|
|
||||||
|
if dry_run do
|
||||||
|
IO.puts("Would generate: #{@tests_dir}/#{vendor_file}_test.exs")
|
||||||
|
else
|
||||||
|
path = "#{@tests_dir}/#{vendor_file}_test.exs"
|
||||||
|
File.write!(path, content)
|
||||||
|
IO.puts("Generated: #{path}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp extract_profile_names(path) do
|
||||||
|
case File.read(path) do
|
||||||
|
{:ok, content} ->
|
||||||
|
case Regex.run(~r/def profile_names.*?do:?\s*(\[.*?\])/s, content) do
|
||||||
|
[_, list_str] ->
|
||||||
|
# Parse the list from the string
|
||||||
|
{result, _} = Code.eval_string(list_str)
|
||||||
|
result
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp generate_test_content(module_name, profile_names) do
|
||||||
|
profiles_inspect = inspect(profile_names)
|
||||||
|
|
||||||
|
"""
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.#{module_name}Test do
|
||||||
|
use Towerops.DataCase, async: true
|
||||||
|
|
||||||
|
import Mox
|
||||||
|
|
||||||
|
alias Towerops.Snmp.Profiles.Vendors.#{module_name}
|
||||||
|
alias Towerops.Snmp.SnmpMock
|
||||||
|
|
||||||
|
setup :verify_on_exit!
|
||||||
|
|
||||||
|
@client_opts [
|
||||||
|
ip: "192.168.1.1",
|
||||||
|
community: "public",
|
||||||
|
version: "2c",
|
||||||
|
port: 161,
|
||||||
|
timeout: 5000
|
||||||
|
]
|
||||||
|
|
||||||
|
describe "profile_names/0" do
|
||||||
|
test "returns expected profile names" do
|
||||||
|
assert #{module_name}.profile_names() == #{profiles_inspect}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "detect_hardware/1" do
|
||||||
|
test "returns hardware description when SNMP responds" do
|
||||||
|
expect(SnmpMock, :get, fn _, "1.3.6.1.2.1.1.1.0", _ ->
|
||||||
|
{:ok, "Test Device Model XYZ"}
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert #{module_name}.detect_hardware(@client_opts) == "Test Device Model XYZ"
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns nil when SNMP fails" do
|
||||||
|
expect(SnmpMock, :get, fn _, _, _ ->
|
||||||
|
{:error, :timeout}
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert #{module_name}.detect_hardware(@client_opts) == nil
|
||||||
|
end
|
||||||
|
|
||||||
|
test "truncates long descriptions to 64 characters" do
|
||||||
|
long_descr = String.duplicate("A", 100)
|
||||||
|
|
||||||
|
expect(SnmpMock, :get, fn _, "1.3.6.1.2.1.1.1.0", _ ->
|
||||||
|
{:ok, long_descr}
|
||||||
|
end)
|
||||||
|
|
||||||
|
result = #{module_name}.detect_hardware(@client_opts)
|
||||||
|
assert String.length(result) == 64
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "wireless_oid_defs/0" do
|
||||||
|
test "returns list of sensor definitions" do
|
||||||
|
defs = #{module_name}.wireless_oid_defs()
|
||||||
|
|
||||||
|
assert is_list(defs)
|
||||||
|
assert length(defs) >= 1
|
||||||
|
end
|
||||||
|
|
||||||
|
test "each definition has required fields" do
|
||||||
|
defs = #{module_name}.wireless_oid_defs()
|
||||||
|
|
||||||
|
Enum.each(defs, fn def ->
|
||||||
|
assert Map.has_key?(def, :oid)
|
||||||
|
assert Map.has_key?(def, :sensor_descr)
|
||||||
|
assert Map.has_key?(def, :sensor_type)
|
||||||
|
assert Map.has_key?(def, :sensor_unit)
|
||||||
|
assert Map.has_key?(def, :sensor_divisor)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "discover_wireless_sensors/1" do
|
||||||
|
test "discovers sensors when SNMP responds" do
|
||||||
|
defs = #{module_name}.wireless_oid_defs()
|
||||||
|
num_defs = length(defs)
|
||||||
|
|
||||||
|
expect(SnmpMock, :get, num_defs, fn _, _oid, _ ->
|
||||||
|
{:ok, 42}
|
||||||
|
end)
|
||||||
|
|
||||||
|
sensors = #{module_name}.discover_wireless_sensors(@client_opts)
|
||||||
|
|
||||||
|
assert is_list(sensors)
|
||||||
|
assert length(sensors) == num_defs
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns empty list when no sensors respond" do
|
||||||
|
defs = #{module_name}.wireless_oid_defs()
|
||||||
|
num_defs = length(defs)
|
||||||
|
|
||||||
|
expect(SnmpMock, :get, num_defs, fn _, _, _ ->
|
||||||
|
{:error, :no_such_object}
|
||||||
|
end)
|
||||||
|
|
||||||
|
sensors = #{module_name}.discover_wireless_sensors(@client_opts)
|
||||||
|
|
||||||
|
assert sensors == []
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
"""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -157,20 +157,21 @@ defmodule Towerops.Snmp.DeferredDiscovery do
|
||||||
@doc """
|
@doc """
|
||||||
Categorizes a device as fast or slow based on initial response time.
|
Categorizes a device as fast or slow based on initial response time.
|
||||||
Returns :fast, :slow, or :unresponsive.
|
Returns :fast, :slow, or :unresponsive.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
* `:fast_threshold` - milliseconds below which device is considered fast (default: 1000)
|
||||||
"""
|
"""
|
||||||
@spec categorize_device_speed(Client.connection_opts()) :: :fast | :slow | :unresponsive
|
@spec categorize_device_speed(Client.connection_opts(), keyword()) ::
|
||||||
def categorize_device_speed(client_opts) do
|
:fast | :slow | :unresponsive
|
||||||
|
def categorize_device_speed(client_opts, opts \\ []) do
|
||||||
|
fast_threshold = Keyword.get(opts, :fast_threshold, 1_000)
|
||||||
start_time = System.monotonic_time(:millisecond)
|
start_time = System.monotonic_time(:millisecond)
|
||||||
|
|
||||||
case Client.get(client_opts, "1.3.6.1.2.1.1.1.0") do
|
case Client.get(client_opts, "1.3.6.1.2.1.1.1.0") do
|
||||||
{:ok, _} ->
|
{:ok, _} ->
|
||||||
elapsed = System.monotonic_time(:millisecond) - start_time
|
elapsed = System.monotonic_time(:millisecond) - start_time
|
||||||
|
|
||||||
cond do
|
if elapsed < fast_threshold, do: :fast, else: :slow
|
||||||
elapsed < 1_000 -> :fast
|
|
||||||
elapsed < 5_000 -> :slow
|
|
||||||
true -> :slow
|
|
||||||
end
|
|
||||||
|
|
||||||
{:error, _} ->
|
{:error, _} ->
|
||||||
:unresponsive
|
:unresponsive
|
||||||
|
|
|
||||||
58
lib/towerops/snmp/profiles/vendors/a10.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/a10.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.A10 do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for A10 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.22610
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["acos", "zxa10"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/adva.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/adva.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Adva do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Adva 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.2544
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["adva-aos", "adva-fsp150cp", "adva-osa", "adva_fsp150", "adva_fsp3kr7", "adva_xg300"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/advantech.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/advantech.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Advantech do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Advantech 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.10297
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["advantech", "icr-os"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/airconsole.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/airconsole.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Airconsole do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Airconsole 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.14358
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["airconsole"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/alcatel.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/alcatel.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Alcatel do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Alcatel 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["omnipcx"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/allied.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/allied.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Allied do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Allied 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["allied", "allied-tq"]
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
@ -21,7 +21,7 @@ defmodule Towerops.Snmp.Profiles.Vendors.AlliedTelesis do
|
||||||
@sysdescr_oid "1.3.6.1.2.1.1.1.0"
|
@sysdescr_oid "1.3.6.1.2.1.1.1.0"
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def profile_names, do: ["allied", "awplus", "allied-tq"]
|
def profile_names, do: ["allied", "awplus", "allied-tq", "radlan"]
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def detect_hardware(client_opts) do
|
def detect_hardware(client_opts) do
|
||||||
|
|
|
||||||
58
lib/towerops/snmp/profiles/vendors/alpha.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/alpha.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Alpha do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Alpha 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.26854
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["compas", "fxm"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/arbor.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/arbor.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Arbor do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Arbor 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.9694
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["arbos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/arris.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/arris.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Arris do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Arris 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.4115
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["arris-d5"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/asentria.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/asentria.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Asentria do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Asentria 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.3052
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["siteboss", "siteboss360", "siteboss550", "siteboss571", "siteboss572"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/audiocodes.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/audiocodes.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Audiocodes do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Audiocodes 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.5003
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["audiocodes"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/avaya.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/avaya.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Avaya do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Avaya 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.6889
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["avaya-ipo"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/axis.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/axis.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Axis do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Axis 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["axisaudio", "axiscam", "axisdocserver"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/barco.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/barco.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Barco do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Barco 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.7312
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["clickshare"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/barracuda.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/barracuda.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Barracuda do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Barracuda 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.10704
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["barracudaloadbalancer", "barracudangfirewall", "barracudaspamfirewall", "barracudawafirewall"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/bistream.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/bistream.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Bistream do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Bistream 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.6603
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["hyperion"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/bke.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/bke.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Bke do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Bke 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.27533
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["bke"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/brocade.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/brocade.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Brocade do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Brocade 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.1588
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["fabos", "ironware", "nos", "serveriron"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/bti.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/bti.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Bti do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Bti 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.30005
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["bti800"]
|
||||||
|
|
||||||
|
@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
|
||||||
59
lib/towerops/snmp/profiles/vendors/cambium.ex
vendored
Normal file
59
lib/towerops/snmp/profiles/vendors/cambium.ex
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Cambium do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Cambium 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.161
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names,
|
||||||
|
do: ["cmm", "cmm4", "cnpilote", "cnpilotr", "epmp", "pmp", "ptp250", "ptp500", "ptp600", "ptp650", "ptp670", "ptp800"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/cdata.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/cdata.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Cdata do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Cdata 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.17409
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["cdata"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/christie.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/christie.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Christie do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Christie 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.25766
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["christie-projector"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/ciena.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/ciena.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Ciena do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Ciena 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.562
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["ciena-saos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/cirpack.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/cirpack.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Cirpack do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Cirpack 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["cirpack"]
|
||||||
|
|
||||||
|
@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
|
||||||
87
lib/towerops/snmp/profiles/vendors/cisco.ex
vendored
Normal file
87
lib/towerops/snmp/profiles/vendors/cisco.ex
vendored
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Cisco do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Cisco 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.9
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names,
|
||||||
|
do: [
|
||||||
|
"acano",
|
||||||
|
"acs",
|
||||||
|
"acsw",
|
||||||
|
"apic",
|
||||||
|
"asa",
|
||||||
|
"cat1900",
|
||||||
|
"catos",
|
||||||
|
"cimc",
|
||||||
|
"ciscoepc",
|
||||||
|
"ciscome1200",
|
||||||
|
"ciscosat",
|
||||||
|
"ciscosb",
|
||||||
|
"ciscosce",
|
||||||
|
"ciscospa",
|
||||||
|
"ciscosrp",
|
||||||
|
"ciscowlc",
|
||||||
|
"ftd",
|
||||||
|
"fxos",
|
||||||
|
"ios",
|
||||||
|
"iosxe",
|
||||||
|
"iosxr",
|
||||||
|
"nxos",
|
||||||
|
"ons",
|
||||||
|
"pixos",
|
||||||
|
"sanos",
|
||||||
|
"viptela",
|
||||||
|
"waas"
|
||||||
|
]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/citrix.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/citrix.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Citrix do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Citrix 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.3845
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["netscaler-sdwan"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/corero.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/corero.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Corero do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Corero 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.41036
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["cms"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/cts.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/cts.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Cts do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Cts 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.9304
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["cts"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/cyberpower.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/cyberpower.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Cyberpower do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Cyberpower 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.3808
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["cyberpower"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/dahua.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/dahua.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Dahua do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Dahua 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.1004849
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["dahua-nvr"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/dantherm.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/dantherm.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Dantherm do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Dantherm 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["dantherm-os"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/dell.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/dell.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Dell do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Dell 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.674
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["dell-ome-m", "dell-os10", "dell-powervault", "dell-rcs", "dell-rpdu", "dell-sonic", "dell-ups"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/delta.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/delta.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Delta do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Delta 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.20246
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["deltaorion"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/deltanet.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/deltanet.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Deltanet do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Deltanet 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.35616
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["lambdatrail"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/deva.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/deva.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Deva do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Deva 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["deva-db7001"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/dkt.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/dkt.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Dkt do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Dkt 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["dkt"]
|
||||||
|
|
||||||
|
@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
|
||||||
59
lib/towerops/snmp/profiles/vendors/dlink.ex
vendored
Normal file
59
lib/towerops/snmp/profiles/vendors/dlink.ex
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Dlink do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Dlink 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.171
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
# Note: "dlinkap" is handled by the Dlinkap module
|
||||||
|
def profile_names, do: ["dlink", "dlink-dgs1250"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/dpstelecom.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/dpstelecom.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Dpstelecom do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Dpstelecom 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.2682
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["netguardian"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/eaton.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/eaton.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Eaton do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Eaton 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.935
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["eaton-ats", "eaton-matrix", "eaton-sc200", "eaton-sc300", "eatonpdu"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/edfa.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/edfa.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Edfa do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Edfa 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.17409
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["edfa"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/eds.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/eds.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Eds do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Eds 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.31440
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["eds"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/ekinops.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/ekinops.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Ekinops do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Ekinops 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.20044
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["ekinops"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/epson.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/epson.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Epson do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Epson 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.1248
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["epson-projector", "epson-scanner"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/ericsson.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/ericsson.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Ericsson do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Ericsson 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.572
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["elg-ipecs-es", "ericsson-ipos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/extreme.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/extreme.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Extreme do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Extreme 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.1588
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["slxos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/f5.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/f5.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.F5 do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for F5 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.3375
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["f5", "f5os"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/fibrolan.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/fibrolan.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Fibrolan do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Fibrolan 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.4467
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["fibrolan-falcon", "fibrolan-metrostar"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/firebrick.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/firebrick.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Firebrick do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Firebrick 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["firebrick"]
|
||||||
|
|
||||||
|
@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
|
||||||
71
lib/towerops/snmp/profiles/vendors/fortinet.ex
vendored
Normal file
71
lib/towerops/snmp/profiles/vendors/fortinet.ex
vendored
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Fortinet do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Fortinet 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.12356
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
# Note: "fortiap" and "fortiwlc" are handled by Fortiap and Fortiwlc modules
|
||||||
|
def profile_names,
|
||||||
|
do: [
|
||||||
|
"fortiadc",
|
||||||
|
"fortiauthenticator",
|
||||||
|
"fortiextender",
|
||||||
|
"fortigate",
|
||||||
|
"fortimail",
|
||||||
|
"fortios",
|
||||||
|
"fortisandbox",
|
||||||
|
"fortiswitch",
|
||||||
|
"fortivoice",
|
||||||
|
"fortiweb"
|
||||||
|
]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/fs.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/fs.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Fs do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Fs 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.52642
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["fs-bdcom", "fs-centec", "fs-gbn", "fs-net-pdu", "fs-nmu", "fs-switch", "fs-switch-dc"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/geist.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/geist.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Geist do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Geist 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.21239
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["geist-pdu", "geist-watchdog"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/gigamon.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/gigamon.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Gigamon do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Gigamon 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.26866
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["gigavue"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/greenbone.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/greenbone.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Greenbone do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Greenbone 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["gos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/gude.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/gude.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Gude do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Gude 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.28507
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["ets", "gude-esb"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/gwd.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/gwd.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Gwd do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Gwd 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.10072
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["gwd"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/hikvision.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/hikvision.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Hikvision do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Hikvision 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.50001
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["hikvision-cam", "hikvision-nvr"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/hillstone.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/hillstone.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Hillstone do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Hillstone 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["stoneos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/himoinsa.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/himoinsa.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Himoinsa do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Himoinsa 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["himoinsa-gensets"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/hp.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/hp.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Hp do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Hp 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.11
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["hpblmos", "hpe-ilo", "hpe-ipdu", "hpe-msa", "hpe-msl", "hpe-pdumm", "hpmsm", "hpvc", "uhp"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/hpe.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/hpe.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Hpe do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Hpe 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.232
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["hpe-mapdu"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/huawei.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/huawei.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Huawei do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Huawei 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.2011
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["huawei-optixrtn", "oceanstor", "smartax", "smartax-mdu", "yunshan"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/ibm.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/ibm.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Ibm do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Ibm 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.2
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["ibm-amm", "ibm-i", "ibm-imm", "ibmnos", "ibmtl"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/ibmc.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/ibmc.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Ibmc do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Ibmc 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.2011
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["ibmc"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/ignitenet.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/ignitenet.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Ignitenet do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Ignitenet 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.259
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["fusion"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/illustra.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/illustra.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Illustra do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Illustra 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["illustra"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/imco_power.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/imco_power.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.ImcoPower do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Imco power 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.818
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["imcopower-big", "imcopower-ls110"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/infortrend.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/infortrend.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Infortrend do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Infortrend 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.1714
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["infortrend"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/inovonics.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/inovonics.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
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
|
||||||
58
lib/towerops/snmp/profiles/vendors/jacarta.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/jacarta.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Jacarta do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Jacarta 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.19011
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["interseptor"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/juniper.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/juniper.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Juniper do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Juniper 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.14525
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["juniper-mss", "juniperex2500os", "junos", "junose"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/keenetic.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/keenetic.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Keenetic do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Keenetic 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["keeneticos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/lenovo.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/lenovo.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Lenovo do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Lenovo 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.19046
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["cnos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/liebert.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/liebert.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Liebert do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Liebert 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.476
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["liebert"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/linux.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/linux.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Linux do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Linux 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["aloha"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/luminato.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/luminato.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Luminato do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Luminato 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.3715
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["luminato"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/meinberg.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/meinberg.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Meinberg do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Meinberg 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.5597
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["mbg-meinbergos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/microsoft.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/microsoft.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Microsoft do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Microsoft 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["windows"]
|
||||||
|
|
||||||
|
@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
|
||||||
59
lib/towerops/snmp/profiles/vendors/mikrotik.ex
vendored
Normal file
59
lib/towerops/snmp/profiles/vendors/mikrotik.ex
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Mikrotik do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Mikrotik 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.14988
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
# Note: "routeros" is handled by the Routeros module
|
||||||
|
def profile_names, do: ["swos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/moxa.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/moxa.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Moxa do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Moxa 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.8691
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["moxa-awk"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/mrv.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/mrv.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Mrv do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Mrv 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.629
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["mrv-od", "mrvld"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/n4rf.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/n4rf.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.N4rf do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for 4rf 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.14817
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["aprisa"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/netapp.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/netapp.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Netapp do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Netapp 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["netapp"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/netgear.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/netgear.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Netgear do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Netgear 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.4526
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["netgear"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/netping.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/netping.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Netping do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Netping 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.25728
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["uniping"]
|
||||||
|
|
||||||
|
@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
|
||||||
59
lib/towerops/snmp/profiles/vendors/nokia.ex
vendored
Normal file
59
lib/towerops/snmp/profiles/vendors/nokia.ex
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Nokia do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Nokia 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.6486
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
# Note: "stellar" is handled by the Stellar module
|
||||||
|
def profile_names, do: ["aos", "aos6", "aos7", "nokia-1830", "nokia-isam", "srlinux", "timos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/opengear.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/opengear.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Opengear do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Opengear 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.25049
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["opengear"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/orolia.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/orolia.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Orolia do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Orolia 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.18837
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["orolia-securesync"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/packetlight.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/packetlight.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Packetlight do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Packetlight 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["packetlight"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/paloalto.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/paloalto.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Paloalto do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Paloalto 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: unknown - uses standard MIB OIDs
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["panos"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/patton.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/patton.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Patton do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Patton 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.1768
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["patton-sn"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/pbi.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/pbi.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Pbi do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Pbi 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.2021
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["ird"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/pegasus.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/pegasus.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Pegasus do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Pegasus 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.6368
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["pegasus"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/polycom.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/polycom.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Polycom do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Polycom 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.2684
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["polycomLens"]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/primekey.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/primekey.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Primekey do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Primekey 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.8072
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["primekey", "primekey-sw"]
|
||||||
|
|
||||||
|
@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
|
||||||
81
lib/towerops/snmp/profiles/vendors/printer.ex
vendored
Normal file
81
lib/towerops/snmp/profiles/vendors/printer.ex
vendored
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Printer do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Printer 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.1602
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names,
|
||||||
|
do: [
|
||||||
|
"brother",
|
||||||
|
"canonprinter",
|
||||||
|
"dell-laser",
|
||||||
|
"developprinter",
|
||||||
|
"epson",
|
||||||
|
"gestetner",
|
||||||
|
"jetdirect",
|
||||||
|
"konica",
|
||||||
|
"kyocera",
|
||||||
|
"lanier",
|
||||||
|
"lexmarkprinter",
|
||||||
|
"nrg",
|
||||||
|
"okilan",
|
||||||
|
"ricoh",
|
||||||
|
"samsungprinter",
|
||||||
|
"savin",
|
||||||
|
"sharp",
|
||||||
|
"toshiba-tec",
|
||||||
|
"tsc",
|
||||||
|
"utax",
|
||||||
|
"xerox"
|
||||||
|
]
|
||||||
|
|
||||||
|
@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
|
||||||
58
lib/towerops/snmp/profiles/vendors/profline.ex
vendored
Normal file
58
lib/towerops/snmp/profiles/vendors/profline.ex
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
defmodule Towerops.Snmp.Profiles.Vendors.Profline do
|
||||||
|
@moduledoc """
|
||||||
|
SNMP profile for Profline 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.21222
|
||||||
|
|
||||||
|
@impl true
|
||||||
|
def profile_names, do: ["profline-sfd"]
|
||||||
|
|
||||||
|
@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
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue