diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2015-01-15 10:52:53 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2015-01-15 11:03:31 +0100 |
commit | eb8560061ab2aed5c0f2ce2ca9fa0fe28fa89af4 (patch) | |
tree | deb2b60a23b50a5d96097adf478816e597431be4 | |
parent | 00da2bbbd23bc3caefb3959e2c14d6f976154f8a (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.lua | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua index 060e45f95..7877e6ff4 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() |