diff options
Diffstat (limited to 'applications/luci-statistics/luasrc/statistics/datatree.lua')
-rw-r--r-- | applications/luci-statistics/luasrc/statistics/datatree.lua | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/applications/luci-statistics/luasrc/statistics/datatree.lua b/applications/luci-statistics/luasrc/statistics/datatree.lua deleted file mode 100644 index 850b83a998..0000000000 --- a/applications/luci-statistics/luasrc/statistics/datatree.lua +++ /dev/null @@ -1,209 +0,0 @@ ---[[ - -Luci statistics - rrd data tree builder -(c) 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ - -]]-- - -module("luci.statistics.datatree", package.seeall) - -local util = require("luci.util") -local sys = require("luci.sys") -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local sections = uci:get_all("luci_statistics") - - -Instance = util.class() - -function Instance.__init__( self, host ) - self._host = host or sections.collectd.Hostname or sys.hostname() - self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" - self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" - - self._libdir = self._libdir:gsub("/$","") - self._rrddir = self._rrddir:gsub("/$","") - self._plugins = { } - - self:_scan() -end - -function Instance._mkpath( self, plugin, pinstance ) - local dir = self._rrddir .. "/" .. self._host - - if type(plugin) == "string" and plugin:len() > 0 then - dir = dir .. "/" .. plugin - - if type(pinstance) == "string" and pinstance:len() > 0 then - dir = dir .. "-" .. pinstance - end - end - - return dir -end - -function Instance._ls( self, ... ) - local ditr = fs.dir(self:_mkpath(...)) - if ditr then - local dirs = { } - while true do - local d = ditr() - if not d then break end - dirs[#dirs+1] = d - end - return dirs - end -end - -function Instance._notzero( self, table ) - for k in pairs(table) do - return true - end - - return false -end - -function Instance._scan( self ) - local dirs = self:_ls() - if not dirs then - return - end - --- for i, plugin in ipairs( dirs ) do --- if plugin:match("%w+.so") then --- self._plugins[ plugin:gsub("%.so$", "") ] = { } --- end --- end - - for _, dir in ipairs(dirs) do - if dir ~= "." and dir ~= ".." and - fs.stat(self:_mkpath(dir)).type == "dir" - then - local plugin = dir:gsub("%-.+$", "") - if not self._plugins[plugin] then - self._plugins[plugin] = { } - end - end - end - - for plugin, instances in pairs( self._plugins ) do - - local dirs = self:_ls() - - if type(dirs) == "table" then - for i, dir in ipairs(dirs) do - if dir:find( plugin .. "%-" ) or dir == plugin then - local instance = "" - - if dir ~= plugin then - instance = dir:gsub( plugin .. "%-", "", 1 ) - end - - instances[instance] = { } - end - end - end - - for instance, data_instances in pairs( instances ) do - - dirs = self:_ls(plugin, instance) - - if type(dirs) == "table" then - for i, file in ipairs(dirs) do - if file:find("%.rrd") then - file = file:gsub("%.rrd","") - - local data_type - local data_instance - - if file:find("%-") then - data_type = file:gsub( "%-.+","" ) - data_instance = file:gsub( "[^%-]-%-", "", 1 ) - else - data_type = file - data_instance = "" - end - - if not data_instances[data_type] then - data_instances[data_type] = { data_instance } - else - table.insert( data_instances[data_type], data_instance ) - end - end - end - end - end - end -end - - -function Instance.plugins( self ) - local rv = { } - - for plugin, val in pairs( self._plugins ) do - if self:_notzero( val ) then - table.insert( rv, plugin ) - end - end - - return rv -end - -function Instance.plugin_instances( self, plugin ) - local rv = { } - - for instance, val in pairs( self._plugins[plugin] ) do - table.insert( rv, instance ) - end - - return rv -end - -function Instance.data_types( self, plugin, instance ) - local rv = { } - local p = self._plugins[plugin] - - if type(p) == "table" and type(p[instance]) == "table" then - for type, val in pairs(p[instance]) do - table.insert( rv, type ) - end - end - - return rv -end - -function Instance.data_instances( self, plugin, instance, dtype ) - local rv = { } - local p = self._plugins[plugin] - - if type(p) == "table" and type(p[instance]) == "table" and type(p[instance][dtype]) == "table" then - for i, instance in ipairs(p[instance][dtype]) do - table.insert( rv, instance ) - end - end - - return rv -end - -function Instance.host_instances( self ) - local hosts_path = fs.glob(self._rrddir..'/*') - local hosts = { } - - if hosts_path then - local path - for path in hosts_path do - hosts[#hosts+1] = fs.basename(path) - end - end - - return hosts -end - |