From 8c15d14b6b2fdc1d064c8200ae7d14bb912d8cb3 Mon Sep 17 00:00:00 2001 From: zaits07 Date: Tue, 25 Aug 2026 13:53:35 +0300 Subject: [PATCH 1/3] Update webapp.rb Display last configuration change date on nodes list Opt-in by configuration mtime_from_versions = true --- lib/oxidized/web/webapp.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/oxidized/web/webapp.rb b/lib/oxidized/web/webapp.rb index c3bc1e0..67fe7d8 100644 --- a/lib/oxidized/web/webapp.rb +++ b/lib/oxidized/web/webapp.rb @@ -47,6 +47,9 @@ class WebApp < Sinatra::Base node[:status] = node[:last][:status] node[:time] = node[:last][:end] end + if settings.configuration[:mtime_from_versions] == true + set_mtime_from_versions(node) + end node end out :nodes @@ -61,6 +64,9 @@ class WebApp < Sinatra::Base node[:status] = node[:last][:status] node[:time] = node[:last][:end] end + if settings.configuration[:mtime_from_versions] == true + set_mtime_from_versions(node) + end node end out :nodes @@ -351,6 +357,20 @@ def filter_node_vars(serialized_node) data end + + # set node last changed time to last version time + # potential can be long operation + def set_mtime_from_versions(node) + if node[:mtime] == 'unknown' || node[:mtime].nil? + group = node[:group] == 'default' ? nil : node[:group] + versions = nodes.version(node[:name], group) + if versions.is_a?(Array) && !versions.empty? && versions.first[:time] + node[:mtime] = versions.first[:time] + end + end + node + end + end end end From a259cde54c9d612761e5fc320816dd638d44e56c Mon Sep 17 00:00:00 2001 From: zaits07 Date: Tue, 25 Aug 2026 14:01:33 +0300 Subject: [PATCH 2/3] Update configuration.md mtime_from_versions config parameter description --- docs/configuration.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index eba8ad5..c3cb963 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -23,6 +23,10 @@ You can set the following parameter: - `url_prefix`: Defines a URL prefix (default: no prefix) - `vhosts`: A list of virtual hosts to listen to. If not specified, it will respond to any virtual host. +- `mtime_from_versions`: `true`/`false`: Enables or disables display + last configuration change date on nodes list from last version. + Can increase node list display time depend on used `output` realization + (default: `false`) ## Examples @@ -87,4 +91,4 @@ extensions: hide_node_vars: - enable - password -``` \ No newline at end of file +``` From 022fc7c70e55a4b8a1199b3f1e3f21889cd858e7 Mon Sep 17 00:00:00 2001 From: zaits07 Date: Wed, 26 Aug 2026 08:34:50 +0300 Subject: [PATCH 3/3] fix: add mtime_from_versions to parse_new_configuration --- lib/oxidized/web.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/oxidized/web.rb b/lib/oxidized/web.rb index 7871352..b81cb95 100644 --- a/lib/oxidized/web.rb +++ b/lib/oxidized/web.rb @@ -63,7 +63,8 @@ def self.parse_new_configuration(configuration) uri_prefix: normalize_uri(configuration.url_prefix? || DEFAULT_URI_PREFIX), vhosts: configuration.vhosts? || [], - hide_node_vars: hide_node_vars + hide_node_vars: hide_node_vars, + mtime_from_versions: configuration.mtime_from_versions? || false } end