ntopng/scripts/lua/modules/pools/pools_alert_utils.lua
2023-04-24 12:48:59 +02:00

68 lines
2 KiB
Lua

--
-- (C) 2020 - ntop.org
--
-- This file contains the alert constats
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/pools/?.lua;" .. package.path
local alert_entities = require "alert_entities"
local pools = require "pools"
local host_pools_instance = nil
-- ################################################################################
local pools_alert_utils = {}
-- ################################################################################
-- @brief Returns the pool id of a given `entity_info`
function pools_alert_utils.get_host_pool_id(entity_info)
local alert_entity = entity_info.alert_entity
local pool_member = entity_info.entity_val
-- There's no pool member or the alert entity is invalid
if not pool_member or not alert_entity or not alert_entity.entity_id then
tprint(string.format("skipping %s [%s]", pool_member, alert_entity.label or ''))
return nil
end
-- Active Monitoring alert to Host
-- or Host alert triggered in Lua
if alert_entity == alert_entities.am_host or
alert_entity == alert_entities.host then
local host_info = split(pool_member, "@")
if #host_info == 2 then
pool_member = host_info[2]
end
-- SNMP alert to Host
elseif alert_entity == alert_entities.snmp_device then
local snmp_device_info = split(pool_member, "_")
if #snmp_device_info >= 1 then
pool_member = snmp_device_info[1]
end
else
-- Unsupported alert type
return nil
end
if not host_pools_instance then
local host_pools = require "host_pools"
host_pools_instance = host_pools:create()
end
if not host_pools_instance then
-- tprint(string.format("Pool NOT found for %s [%s]", pool_member, alert_entity.label))
return nil
end
local res = host_pools_instance:get_pool_id(pool_member)
-- tprint(string.format("Found pool %u for %s", res, pool_member))
return res
end
-- ################################################################################
return pools_alert_utils