summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2015-01-15 10:52:53 +0100
committerJo-Philipp Wich <jow@openwrt.org>2015-01-15 11:03:31 +0100
commiteb8560061ab2aed5c0f2ce2ca9fa0fe28fa89af4 (patch)
treedeb2b60a23b50a5d96097adf478816e597431be4
parent00da2bbbd23bc3caefb3959e2c14d6f976154f8a (diff)
luci-base: add luci.util.ubus()
Add luci.util.ubus() convenience wrapper which establishes a connection on the first call. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
-rw-r--r--modules/luci-base/luasrc/util.lua26
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua
index 060e45f951..7877e6ff4e 100644
--- a/modules/luci-base/luasrc/util.lua
+++ b/modules/luci-base/luasrc/util.lua
@@ -30,6 +30,9 @@ local string = require "string"
local coroutine = require "coroutine"
local tparser = require "luci.template.parser"
+local _ubus = require "ubus"
+local _ubus_connection = nil
+
local getmetatable, setmetatable = getmetatable, setmetatable
local rawget, rawset, unpack = rawget, rawset, unpack
local tostring, type, assert = tostring, type, assert
@@ -704,6 +707,29 @@ function execl(command)
return data
end
+--- Issue an ubus call.
+-- @param object String containing the ubus object to call
+-- @param method String containing the ubus method to call
+-- @param values Table containing the values to pass
+-- @return Table containin the ubus result
+function ubus(object, method, data)
+ if not _ubus_connection then
+ _ubus_connection = _ubus.connect()
+ assert(_ubus_connection, "Unable to establish ubus connection")
+ end
+
+ if object and method then
+ if type(data) ~= "table" then
+ data = { }
+ end
+ return _ubus_connection:call(object, method, data)
+ elseif object then
+ return _ubus_connection:signatures(object)
+ else
+ return _ubus_connection:objects()
+ end
+end
+
--- Returns the absolute path to LuCI base directory.
-- @return String containing the directory path
function libpath()