mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-29 07:29:32 +00:00
Reworks reload of in-mem preferences and runtimeprefs.json dump
This commit is contained in:
parent
3912459892
commit
5b878a2a7a
10 changed files with 115 additions and 34 deletions
83
scripts/lua/modules/prefs_reload_utils.lua
Normal file
83
scripts/lua/modules/prefs_reload_utils.lua
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
--
|
||||
-- (C) 2014-20 - ntop.org
|
||||
--
|
||||
|
||||
local prefs_reload_utils = {}
|
||||
|
||||
-- ###########################################
|
||||
|
||||
-- Key used to determine if it is time to reload in-memory preferences.
|
||||
-- This key is set by Redis.cpp, when a preference is changed.
|
||||
-- NOTE: keep it in sync with ntop_defines.h PREFS_CHANGED
|
||||
local prefs_changed_key = "ntopng.cache.prefs_changed"
|
||||
|
||||
-- Key used to enable periodic runtime preferences dump to file.
|
||||
-- This key, disabled by default, can be enabled when ntopng is run on appliances
|
||||
-- that don't feature a persistent Redis. In this case, it may be useful to dump
|
||||
-- changed preferences to a file and to restore them during boot in boot.lua.
|
||||
local dump_prefs_to_disk_key = "ntopng.prefs.dump_prefs_to_disk"
|
||||
|
||||
-- Key used to request the dump of runtime preferences to dump file.
|
||||
-- Actual dump is performed in prefs_dump_utils.lua.
|
||||
-- NOTE: This key is only set when dump_prefs_to_disk_key is enabled and thus the dump can be requested.
|
||||
local prefs_dump_request_key = "ntopng.cache.prefs_dump_request"
|
||||
|
||||
-- ###########################################
|
||||
|
||||
function prefs_reload_utils.is_dump_prefs_to_disk_enabled()
|
||||
local prefs_to_disk = ntop.getCache(dump_prefs_to_disk_key)
|
||||
|
||||
return prefs_to_disk == "1"
|
||||
end
|
||||
|
||||
-- ###########################################
|
||||
|
||||
function prefs_reload_utils.is_dump_prefs_to_disk_requested()
|
||||
local dump_requested = ntop.getCache(prefs_dump_request_key)
|
||||
|
||||
if dump_requested == "1" then
|
||||
-- Delete before doing the dump to guarantee no other dump request will be lost
|
||||
ntop.delCache(prefs_dump_request_key)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
-- ###########################################
|
||||
|
||||
local function are_prefs_changed()
|
||||
local prefs_changed = ntop.getCache(prefs_changed_key)
|
||||
|
||||
if prefs_changed == "1" then
|
||||
-- Make sure to delete BEFORE doing the actual reload
|
||||
-- To guarantee no reload gets missed
|
||||
ntop.delCache(prefs_changed_key)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
-- ###########################################
|
||||
|
||||
-- @brief Checks and possibly reload in-memory preferences from Redis
|
||||
-- Reload is performed when Redis preferences are changed, to re-align them with in-memory preferences
|
||||
function prefs_reload_utils.check_reload_prefs()
|
||||
if are_prefs_changed() then
|
||||
-- Do the actual reload
|
||||
ntop.reloadPreferences()
|
||||
|
||||
-- Finally check if preferences dump to disk is enabled and,
|
||||
-- in that case, request for the dump
|
||||
if prefs_reload_utils.is_dump_prefs_to_disk_enabled() then
|
||||
ntop.setCache(prefs_dump_request_key, "1")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- ###########################################
|
||||
|
||||
return prefs_reload_utils
|
||||
Loading…
Add table
Add a link
Reference in a new issue