diff --git a/src/ansible.lua b/src/ansible.lua index 6d7cf91..dfaa9d0 100644 --- a/src/ansible.lua +++ b/src/ansible.lua @@ -3,6 +3,7 @@ local Ansible = {} local io = require("io") local json = require("dkjson") +local ubus = require("ubus") Ansible.__index = Ansible @@ -369,4 +370,30 @@ function Ansible:get_params() return self.params end +function Ansible:ubus_connect() + local p = self:get_params() + local timeout = p['timeout'] + if not timeout then + timeout = 30 + end + local socket = p['socket'] + + local conn = ubus.connect(socket, timeout) + if not conn then + self:fail_json({msg="Failed to connect to ubus"}) + end + + return conn +end + +function Ansible:ubus_call(conn, namespace, procedure, arg) + local res, status = conn:call(namespace, procedure, arg) + + if nil ~= status and 0 ~= status then + self:fail_json({msg="Ubus call failed", call={namespace=namespace, procedure=procedure, arg=arg, status=status}}) + end + + return res +end + return Ansible