summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua463
1 files changed, 230 insertions, 233 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 5f18b14..7cf425d 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1,4 +1,4 @@
-module (..., package.seeall)
+local mymodule = {}
-- Load libraries
modelfunctions = require("modelfunctions")
@@ -28,11 +28,6 @@ provdb.table_creation_scripts = require("provisioning/provisioning-scripts")
local saved_devices = {}
local saved_device_params = {}
--- declare some private functions up front
-local get_device
-local get_device_params
-local set_device_params
-
-- ################################################################################
-- LOCAL FUNCTIONS
local function assert (v, m)
@@ -105,7 +100,7 @@ local databaseconnect = function()
-- Let's create all the tables from the start
for n,v in pairs(provdb.table_creation_scripts) do
if not string.match(n, "^_") then
- runsqlcommand("SELECT * FROM "..provdb.escape(n).." LIMIT 1")
+ mymodule.runsqlcommand("SELECT * FROM "..provdb.escape(n).." LIMIT 1")
end
end
else
@@ -116,13 +111,13 @@ local databaseconnect = function()
end
-- This function is used by scripts, do not change prototype
-runsqlcommand = function(sql, transaction)
+mymodule.runsqlcommand = function(sql, transaction)
logevent(sql)
return provdb.runsqlcommand(sql, transaction)
end
-- This function is used by scripts, do not change prototype
-getselectresponse = function(sql, in_transaction)
+mymodule.getselectresponse = function(sql, in_transaction)
logevent(sql)
return provdb.getselectresponse(sql, transaction)
end
@@ -256,21 +251,21 @@ local checkgroupdefaultoverride = function(device_id)
"FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id) JOIN provisioning_groups g USING(group_id) "..
"JOIN param_groups_to_params g2p USING(group_id) JOIN provisioning_params p USING(param_id) JOIN provisioning_values v USING(param_id))"..
"WHERE d2t.device_id='"..provdb.escape(device_id).."' AND v.value IS NOT NULL AND g2p.value IS NOT NULL AND v.value!=g2p.value"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
return (#tmp ~= 0)
end
-- ################################################################################
-- PUBLIC FUNCTIONS
-list_templates = function()
+mymodule.list_templates = function()
local retval = {}
local errtxt
-- Get the templates from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT value AS filename, label, seq FROM provisioning_options WHERE param_id = (SELECT param_id FROM provisioning_params WHERE name = 'template') ORDER BY seq ASC, label ASC, value ASC"
- retval = getselectresponse(sql)
+ retval = mymodule.getselectresponse(sql)
if connected then provdb.databasedisconnect() end
end)
if not res and err then
@@ -299,7 +294,7 @@ list_templates = function()
return cfe({ type="structure", value=retval, label="List of Templates", errtxt=errtxt })
end
-get_template = function(self, clientdata)
+mymodule.get_template = function(self, clientdata)
clientdata = clientdata or {}
local filename = clientdata.filename
local retval = {}
@@ -314,7 +309,7 @@ get_template = function(self, clientdata)
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_options WHERE param_id=(SELECT param_id FROM provisioning_params WHERE name = 'template') AND value='"..provdb.escape(filename).."' ORDER BY seq ASC, label ASC, value ASC"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
for n,v in pairs(tmp[1]) do
if n == "value" then
@@ -338,11 +333,11 @@ get_template = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Template", errtxt=errtxt })
end
-create_template = function(self, template, action)
- return update_template(self, template, action, true)
+mymodule.create_template = function(self, template, action)
+ return mymodule.update_template(self, template, action, true)
end
-update_template = function(self, template, action, create)
+mymodule.update_template = function(self, template, action, create)
local success = true
local errtxt
-- Validate the settings
@@ -365,7 +360,7 @@ update_template = function(self, template, action, create)
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_options WHERE param_id=(SELECT param_id FROM provisioning_params WHERE name = 'template') AND value='"..provdb.escape(template.value.filename.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not create and (not tmp or #tmp == 0) then
success = false
errtxt = "Template does not exist"
@@ -379,7 +374,7 @@ update_template = function(self, template, action, create)
else
sql = "UPDATE provisioning_options SET (label, seq) = ('"..provdb.escape(template.value.label.value).."', '"..provdb.escape(template.value.seq.value).."') WHERE param_id=(SELECT param_id FROM provisioning_params WHERE name = 'template') AND value='"..provdb.escape(template.value.filename.value).."'"
end
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
fs.write_file(template.value.filename.value, string.gsub(format.dostounix(template.value.filecontent.value), "\n+$", ""))
end
@@ -400,26 +395,26 @@ update_template = function(self, template, action, create)
return template
end
-get_delete_template = function(self, clientdata)
+mymodule.get_delete_template = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.filename = cfe({ value=clientdata.filename or "", label="File Name" })
return cfe({ type="group", value=retval, label="Delete Template" })
end
-delete_template = function(self, delreq)
+mymodule.delete_template = function(self, delreq)
local filename = delreq.value.filename.value
delreq.errtxt = "Failed to delete template"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_options WHERE param_id=(SELECT param_id FROM provisioning_params WHERE name = 'template') AND value='"..provdb.escape(filename).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.filename.errtxt = "Template does not exist"
else
-- Remove the template
sql = "DELETE FROM provisioning_options WHERE param_id=(SELECT param_id FROM provisioning_params WHERE name = 'template') AND value='"..provdb.escape(filename).."'"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
-- Delete the template file
os.remove(filename)
delreq.errtxt = nil
@@ -433,14 +428,14 @@ delete_template = function(self, delreq)
return delreq
end
-list_class_groups = function()
+mymodule.list_class_groups = function()
local retval = {}
local errtxt
-- Get the groups from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_class_groups ORDER BY seq ASC, label ASC"
- retval = getselectresponse(sql)
+ retval = mymodule.getselectresponse(sql)
if connected then provdb.databasedisconnect() end
end)
if not res and err then
@@ -450,7 +445,7 @@ list_class_groups = function()
return cfe({ type="structure", value=retval, label="List of Class Groups", errtxt=errtxt })
end
-get_class_group = function(self, clientdata)
+mymodule.get_class_group = function(self, clientdata)
clientdata = clientdata or {}
local class_group_id = clientdata.class_group_id
local retval = {}
@@ -463,7 +458,7 @@ get_class_group = function(self, clientdata)
local connected = databaseconnect()
if class_group_id and class_group_id ~= "" then
sql = "SELECT * FROM provisioning_class_groups WHERE class_group_id='"..provdb.escape(class_group_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
for n,v in pairs(tmp[1]) do
if retval[n] then
@@ -483,11 +478,11 @@ get_class_group = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Class Group", errtxt=errtxt })
end
-create_class_group = function(self, group, action)
- return update_class_group(self, group, action, true)
+mymodule.create_class_group = function(self, group, action)
+ return mymodule.update_class_group(self, group, action, true)
end
-update_class_group = function(self, group, action, create)
+mymodule.update_class_group = function(self, group, action, create)
local success = true
local errtxt
-- Validate the settings
@@ -511,7 +506,7 @@ update_class_group = function(self, group, action, create)
local connected = databaseconnect()
if not create then
local sql = "SELECT * FROM provisioning_class_groups WHERE class_group_id='"..provdb.escape(group.value.class_group_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
errtxt = "Group does not exist"
@@ -519,12 +514,12 @@ update_class_group = function(self, group, action, create)
end
if success then
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
if create then
sql = "INSERT INTO provisioning_class_groups VALUES(DEFAULT, '"..provdb.escape(group.value.name.value).."', '"..provdb.escape(group.value.label.value).."', '"..provdb.escape(group.value.seq.value).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "SELECT class_group_id FROM provisioning_class_groups WHERE label='"..provdb.escape(group.value.label.value).."'"
- local tmp = getselectresponse(sql, true)
+ local tmp = mymodule.getselectresponse(sql, true)
if tmp and #tmp>0 then
group.value.class_group_id = cfe({value=tmp[1].class_group_id, label="Class Group ID", readonly=true, seq=1})
else
@@ -532,11 +527,11 @@ update_class_group = function(self, group, action, create)
end
else
sql = "UPDATE provisioning_class_groups SET (name, label, seq) = ('"..provdb.escape(group.value.name.value).."', '"..provdb.escape(group.value.label.value).."', '"..provdb.escape(group.value.seq.value).."') WHERE class_group_id='"..provdb.escape(group.value.class_group_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
end
if connected then provdb.databasedisconnect() end
end)
@@ -556,25 +551,25 @@ update_class_group = function(self, group, action, create)
return group
end
-get_delete_class_group = function(self, clientdata)
+mymodule.get_delete_class_group = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.class_group_id = cfe({ value=clientdata.class_group_id or "", label="Class Group ID" })
return cfe({ type="group", value=retval, label="Delete Class Group" })
end
-delete_class_group = function(self, delreq)
+mymodule.delete_class_group = function(self, delreq)
local class_group_id = delreq.value.class_group_id.value
delreq.errtxt = "Failed to delete class group"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_class_groups WHERE class_group_id='"..provdb.escape(class_group_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.class_group_id.errtxt = "Group does not exist"
else
sql = "DELETE FROM provisioning_class_groups WHERE class_group_id='"..provdb.escape(class_group_id).."'"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
delreq.errtxt = nil
end
if connected then provdb.databasedisconnect() end
@@ -586,14 +581,14 @@ delete_class_group = function(self, delreq)
return delreq
end
-list_classes = function()
+mymodule.list_classes = function()
local retval = {}
local errtxt
-- Get the classes from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT class_id, g.label AS group, g.name, c.label, c.seq FROM provisioning_classes c JOIN provisioning_class_groups g USING(class_group_id) ORDER BY g.seq ASC, g.label ASC, c.seq ASC, c.label ASC"
- retval = getselectresponse(sql)
+ retval = mymodule.getselectresponse(sql)
if connected then provdb.databasedisconnect() end
end)
if not res and err then
@@ -603,7 +598,7 @@ list_classes = function()
return cfe({ type="structure", value=retval, label="List of Classes", errtxt=errtxt })
end
-get_class = function(self, clientdata)
+mymodule.get_class = function(self, clientdata)
clientdata = clientdata or {}
local class_id = clientdata.class_id
local retval = {}
@@ -618,7 +613,7 @@ get_class = function(self, clientdata)
local connected = databaseconnect()
if class_id and class_id ~= "" then
local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..provdb.escape(class_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
for n,v in pairs(tmp[1]) do
if retval[n] then
@@ -628,7 +623,7 @@ get_class = function(self, clientdata)
end
-- Now, get the class-to-paramgroup mappings
sql = "SELECT group_id FROM classes_to_param_groups WHERE class_id='"..provdb.escape(class_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,g in ipairs(tmp) do
groups[g.group_id] = true
end
@@ -637,13 +632,13 @@ get_class = function(self, clientdata)
end
-- Get the class_group_id options
sql = "SELECT * from provisioning_class_groups ORDER BY seq ASC, label ASC"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,g in ipairs(tmp) do
retval.class_group_id.option[#retval.class_group_id.option + 1] = {value=g.class_group_id, label=g.label}
end
-- Finally, get the paramgroup options
sql = "SELECT group_id, name, label FROM provisioning_groups ORDER BY seq ASC, name ASC"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,g in ipairs(tmp) do
if not retval.groups.value[g.name] then
retval.groups.value[g.name] = cfe({type="select", label=g.name, option={{value="", label=""}}, seq=i})
@@ -663,11 +658,11 @@ get_class = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Class", errtxt=errtxt })
end
-create_class = function(self, class, action)
- return update_class(self, class, action, true)
+mymodule.create_class = function(self, class, action)
+ return mymodule.update_class(self, class, action, true)
end
-update_class = function(self, class, action, create)
+mymodule.update_class = function(self, class, action, create)
local success = true
local errtxt
-- Validate the settings
@@ -688,7 +683,7 @@ update_class = function(self, class, action, create)
local connected = databaseconnect()
if not create then
local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..provdb.escape(class.value.class_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
errtxt = "Class does not exist"
@@ -696,12 +691,12 @@ update_class = function(self, class, action, create)
end
if success then
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
if create then
sql = "INSERT INTO provisioning_classes VALUES(DEFAULT, '"..provdb.escape(class.value.class_group_id.value).."', '"..provdb.escape(class.value.label.value).."', '"..provdb.escape(class.value.seq.value).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "SELECT class_id FROM provisioning_classes WHERE class_group_id='"..provdb.escape(class.value.class_group_id.value).."' AND label='"..provdb.escape(class.value.label.value).."'"
- local tmp = getselectresponse(sql, true)
+ local tmp = mymodule.getselectresponse(sql, true)
if tmp and #tmp>0 then
class.value.class_id = cfe({value=tmp[1].class_id, label="Class ID", readonly=true, seq=1})
else
@@ -709,20 +704,20 @@ update_class = function(self, class, action, create)
end
else
sql = "UPDATE provisioning_classes SET (class_group_id, label, seq) = ('"..provdb.escape(class.value.class_group_id.value).."', '"..provdb.escape(class.value.label.value).."', '"..provdb.escape(class.value.seq.value).."') WHERE class_id='"..provdb.escape(class.value.class_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "DELETE FROM classes_to_param_groups WHERE class_id='"..provdb.escape(class.value.class_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
-- Insert the class to group entries
for n,g in pairs(class.value.groups.value) do
if g.value ~= "" then
sql = "INSERT INTO classes_to_param_groups VALUES('"..provdb.escape(class.value.class_id.value).."', '"..provdb.escape(g.value).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
end
if connected then provdb.databasedisconnect() end
end)
@@ -742,31 +737,31 @@ update_class = function(self, class, action, create)
return class
end
-get_delete_class = function(self, clientdata)
+mymodule.get_delete_class = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.class_id = cfe({ value=clientdata.class_id or "", label="Class ID" })
return cfe({ type="group", value=retval, label="Delete Class" })
end
-delete_class = function(self, delreq)
+mymodule.delete_class = function(self, delreq)
local class_id = delreq.value.class_id.value
delreq.errtxt = "Failed to delete class"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..provdb.escape(class_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.class_id.errtxt = "Class does not exist"
else
sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
sql = "DELETE FROM classes_to_param_groups WHERE class_id='"..provdb.escape(class_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "DELETE FROM provisioning_classes WHERE class_id='"..provdb.escape(class_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
delreq.errtxt = nil
end
if connected then provdb.databasedisconnect() end
@@ -779,14 +774,14 @@ delete_class = function(self, delreq)
return delreq
end
-list_groups = function()
+mymodule.list_groups = function()
local retval = {}
local errtxt
-- Get the groups from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_groups ORDER BY seq ASC, name ASC, label ASC"
- retval = getselectresponse(sql)
+ retval = mymodule.getselectresponse(sql)
if connected then provdb.databasedisconnect() end
end)
if not res and err then
@@ -796,7 +791,7 @@ list_groups = function()
return cfe({ type="structure", value=retval, label="List of Parameter Groups", errtxt=errtxt })
end
-get_group = function(self, clientdata)
+mymodule.get_group = function(self, clientdata)
clientdata = clientdata or {}
local group_id = clientdata.group_id
local retval = {}
@@ -812,14 +807,14 @@ get_group = function(self, clientdata)
local connected = databaseconnect()
-- First, let's get all the parameters to set up the params.options and defaults
local sql = "SELECT * FROM provisioning_params ORDER BY seq ASC, name ASC"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
for i,p in ipairs(tmp) do
retval.params.option[#retval.params.option + 1] = {value=p.param_id, label=p.label}
retval.editable.option[#retval.editable.option + 1] = {value=p.param_id, label=p.label}
p.seq = i
if p.type == "select" then
sql = "SELECT * FROM provisioning_options WHERE param_id='"..provdb.escape(p.param_id).."' ORDER BY seq ASC"
- p.option = getselectresponse(sql) or {}
+ p.option = mymodule.getselectresponse(sql) or {}
end
if p.type == "boolean" then
p.value = (p.value == "true")
@@ -829,7 +824,7 @@ get_group = function(self, clientdata)
end
if group_id and group_id ~= "" then
sql = "SELECT * FROM provisioning_groups WHERE group_id='"..provdb.escape(group_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
for n,v in pairs(tmp[1]) do
if retval[n] then
@@ -839,7 +834,7 @@ get_group = function(self, clientdata)
end
-- Now, get the paramgroup-to-param mappings
sql = "SELECT * FROM param_groups_to_params WHERE group_id='"..provdb.escape(group_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,p in ipairs(tmp) do
retval.params.value[#retval.params.value + 1] = p.param_id
if (p.editable == "t") then
@@ -865,11 +860,11 @@ get_group = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Parameter Group", errtxt=errtxt })
end
-create_group = function(self, group, action)
- return update_group(self, group, action, true)
+mymodule.create_group = function(self, group, action)
+ return mymodule.update_group(self, group, action, true)
end
-update_group = function(self, group, action, create)
+mymodule.update_group = function(self, group, action, create)
local success = true
local errtxt
-- Validate the settings
@@ -904,7 +899,7 @@ update_group = function(self, group, action, create)
local devices = {}
if not create then
local sql = "SELECT * FROM provisioning_groups WHERE group_id='"..provdb.escape(group.value.group_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
errtxt = "Group does not exist"
@@ -914,20 +909,20 @@ update_group = function(self, group, action, create)
sql = "SELECT d2t.device_id "..
"FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id)) "..
"WHERE t2g.group_id='"..provdb.escape(group.value.group_id.value).."'"
- devices = getselectresponse(sql)
+ devices = mymodule.getselectresponse(sql)
-- Make sure the current params are saved for each device
for i,d in ipairs(devices) do
- if not saved_device_params[d.device_id] then get_device_params(self, d.device_id) end
+ if not saved_device_params[d.device_id] then mymodule.get_device_params(self, d.device_id) end
end
end
if success then
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
if create then
sql = "INSERT INTO provisioning_groups VALUES(DEFAULT, '"..provdb.escape(group.value.name.value).."', '"..provdb.escape(group.value.label.value).."', '"..provdb.escape(group.value.seq.value).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "SELECT group_id FROM provisioning_groups WHERE name='"..provdb.escape(group.value.name.value).."' AND label='"..provdb.escape(group.value.label.value).."'"
- local tmp = getselectresponse(sql, true)
+ local tmp = mymodule.getselectresponse(sql, true)
if tmp and #tmp>0 then
group.value.group_id = cfe({value=tmp[1].group_id, label="Group ID", readonly=true, seq=1})
else
@@ -935,9 +930,9 @@ update_group = function(self, group, action, create)
end
else
sql = "UPDATE provisioning_groups SET (name, label, seq) = ('"..provdb.escape(group.value.name.value).."', '"..provdb.escape(group.value.label.value).."', '"..provdb.escape(group.value.seq.value).."') WHERE group_id='"..provdb.escape(group.value.group_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "DELETE FROM param_groups_to_params WHERE group_id='"..provdb.escape(group.value.group_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
-- Reverse the editable table for ease of use below
local reverseeditable = {}
@@ -953,16 +948,16 @@ update_group = function(self, group, action, create)
sql = sql.."null"
end
sql = sql..", '"..provdb.escape(tostring(reverseeditable[p] ~= nil)).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
-- Notify the devices that their params might have changed
for i,d in ipairs(devices) do
local tmp = saved_device_params[d.device_id]
- local p = get_device_params(self, d.device_id)
+ local p = mymodule.get_device_params(self, d.device_id)
callscript(self, updatedeviceparamsscriptfile, p, tmp)
end
end
@@ -984,31 +979,31 @@ update_group = function(self, group, action, create)
return group
end
-get_delete_group = function(self, clientdata)
+mymodule.get_delete_group = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.group_id = cfe({ value=clientdata.group_id or "", label="Group ID" })
return cfe({ type="group", value=retval, label="Delete Group" })
end
-delete_group = function(self, delreq)
+mymodule.delete_group = function(self, delreq)
local group_id = delreq.value.group_id.value
delreq.errtxt = "Failed to delete parameter group"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_groups WHERE group_id='"..provdb.escape(group_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.group_id.errtxt = "Group does not exist"
else
sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
sql = "DELETE FROM param_groups_to_params WHERE group_id='"..provdb.escape(group_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "DELETE FROM provisioning_groups WHERE group_id='"..provdb.escape(group_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
delreq.errtxt = nil
end
if connected then provdb.databasedisconnect() end
@@ -1021,14 +1016,14 @@ delete_group = function(self, delreq)
return delreq
end
-list_params = function()
+mymodule.list_params = function()
local retval = {}
local errtxt
-- Get the params from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_params ORDER BY seq ASC, name ASC, label ASC"
- retval = getselectresponse(sql)
+ retval = mymodule.getselectresponse(sql)
if connected then provdb.databasedisconnect() end
end)
if not res and err then
@@ -1038,7 +1033,7 @@ list_params = function()
return cfe({ type="structure", value=retval, label="List of Parameters", errtxt=errtxt })
end
-get_param = function(self, clientdata)
+mymodule.get_param = function(self, clientdata)
clientdata = clientdata or {}
local param_id = clientdata.param_id
local retval = {}
@@ -1056,7 +1051,7 @@ get_param = function(self, clientdata)
local connected = databaseconnect()
if param_id and param_id ~= "" then
sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
for n,v in pairs(tmp[1]) do
if retval[n] then
@@ -1076,11 +1071,11 @@ get_param = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Parameter", errtxt=errtxt })
end
-create_param = function(self, param, action)
- return update_param(self, param, action, true)
+mymodule.create_param = function(self, param, action)
+ return mymodule.update_param(self, param, action, true)
end
-update_param = function(self, param, action, create)
+mymodule.update_param = function(self, param, action, create)
local success = true
local errtxt
-- Validate the settings
@@ -1111,7 +1106,7 @@ update_param = function(self, param, action, create)
local devices = {}
if not create then
local sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param.value.param_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
errtxt = "Param does not exist"
@@ -1121,20 +1116,20 @@ update_param = function(self, param, action, create)
sql = "SELECT d2t.device_id FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id) "..
"JOIN provisioning_groups g USING(group_id) JOIN param_groups_to_params g2p USING(group_id))"..
"WHERE g2p.param_id='"..provdb.escape(param.value.param_id.value).."'"
- devices = getselectresponse(sql)
+ devices = mymodule.getselectresponse(sql)
-- Make sure the current params are saved for each device
for i,d in ipairs(devices) do
- if not saved_device_params[d.device_id] then get_device_params(self, d.device_id) end
+ if not saved_device_params[d.device_id] then mymodule.get_device_params(self, d.device_id) end
end
end
if success then
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
if create then
sql = "INSERT INTO provisioning_params VALUES(DEFAULT, '"..provdb.escape(param.value.name.value).."', '"..provdb.escape(param.value.type.value).."', '"..provdb.escape(param.value.label.value).."', '"..provdb.escape(param.value.descr.value).."', '"..provdb.escape(param.value.value.value).."', '"..provdb.escape(param.value.seq.value).."', '"..provdb.escape(param.value.regexp.value).."', '"..provdb.escape(format.dostounix(param.value.validate.value)).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "SELECT param_id FROM provisioning_params WHERE name='"..provdb.escape(param.value.name.value).."' AND label='"..provdb.escape(param.value.label.value).."'"
- local tmp = getselectresponse(sql, true)
+ local tmp = mymodule.getselectresponse(sql, true)
if tmp and #tmp>0 then
param.value.param_id = cfe({value=tmp[1].param_id, label="Param ID", readonly=true, seq=1})
else
@@ -1142,16 +1137,16 @@ update_param = function(self, param, action, create)
end
else
sql = "UPDATE provisioning_params SET (name, type, label, descr, value, seq, regexp, validate) = ('"..provdb.escape(param.value.name.value).."', '"..provdb.escape(param.value.type.value).."', '"..provdb.escape(param.value.label.value).."', '"..provdb.escape(param.value.descr.value).."', '"..provdb.escape(param.value.value.value).."', '"..provdb.escape(param.value.seq.value).."', '"..provdb.escape(param.value.regexp.value).."', '"..provdb.escape(format.dostounix(param.value.validate.value)).."') WHERE param_id='"..provdb.escape(param.value.param_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
-- Notify the devices that their params might have changed
for i,d in ipairs(devices) do
local tmp = saved_device_params[d.device_id]
- local p = get_device_params(self, d.device_id)
+ local p = mymodule.get_device_params(self, d.device_id)
callscript(self, updatedeviceparamsscriptfile, p, tmp)
end
end
@@ -1173,31 +1168,31 @@ update_param = function(self, param, action, create)
return param
end
-get_delete_param = function(self, clientdata)
+mymodule.get_delete_param = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.param_id = cfe({ value=clientdata.param_id or "", label="Param ID" })
return cfe({ type="group", value=retval, label="Delete Param" })
end
-delete_param = function(self, delreq)
+mymodule.delete_param = function(self, delreq)
local param_id = delreq.value.param_id.value
delreq.errtxt = "Failed to delete parameter"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.param_id.errtxt = "Parameter does not exist"
else
sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
sql = "DELETE FROM provisioning_options WHERE param_id='"..provdb.escape(param_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "DELETE FROM provisioning_params WHERE param_id='"..provdb.escape(param_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
delreq.errtxt = nil
end
if connected then provdb.databasedisconnect() end
@@ -1210,14 +1205,14 @@ delete_param = function(self, delreq)
return delreq
end
-list_devices = function()
+mymodule.list_devices = function()
local retval = {}
local errtxt
-- Get the devices from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT device_id, c.label AS class, g.label AS group FROM devices_to_classes d2c JOIN provisioning_classes c USING(class_id) JOIN provisioning_class_groups g USING(class_group_id) ORDER BY device_id"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
local reverse_device_id = {}
for i,d in ipairs(tmp) do
if not reverse_device_id[d.device_id] then
@@ -1235,18 +1230,18 @@ list_devices = function()
return cfe({ type="structure", value=retval, label="List of Devices", errtxt=errtxt })
end
-get_existing_device = function(self, clientdata)
+mymodule.get_existing_device = function(self, clientdata)
clientdata = clientdata or {}
- return get_device(self, clientdata.device_id, false)
+ return mymodule.get_device(self, clientdata.device_id, false)
end
-get_new_device = function(self, clientdata)
+mymodule.get_new_device = function(self, clientdata)
clientdata = clientdata or {}
- return get_device(self, clientdata.device_id, true)
+ return mymodule.get_device(self, clientdata.device_id, true)
end
-- This function is used by scripts, do not change prototype
-get_device = function(self, device_id, create)
+mymodule.get_device = function(self, device_id, create)
local retval = {}
retval.device_id = cfe({value=device_id or "", label="Device ID", seq=1})
retval.classes = cfe({type="group", value={}, label="Classes", seq=2})
@@ -1257,14 +1252,14 @@ get_device = function(self, device_id, create)
if not create and device_id and device_id ~= "" then
-- Get the device-to-class mappings
local sql = "SELECT class_id FROM devices_to_classes WHERE device_id='"..provdb.escape(device_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
for i,g in ipairs(tmp) do
classes[g.class_id] = true
end
end
-- Finally, get the class options
sql = "SELECT class_id, g.name, g.label AS group, c.label, c.seq FROM provisioning_classes c JOIN provisioning_class_groups g USING(class_group_id) ORDER BY g.seq ASC, g.label ASC, c.seq ASC, c.label ASC"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,c in ipairs(tmp) do
if not retval.classes.value[c.name] then
retval.classes.value[c.name] = cfe({type="select", label=c.group, option={{value="", label=""}}, seq=i})
@@ -1287,11 +1282,11 @@ get_device = function(self, device_id, create)
return output
end
-create_device = function(self, device, action)
- return update_device(self, device, action, true)
+mymodule.create_device = function(self, device, action)
+ return mymodule.update_device(self, device, action, true)
end
-update_device = function(self, device, action, create)
+mymodule.update_device = function(self, device, action, create)
local success = true
local errtxt
-- Validate the settings
@@ -1308,40 +1303,40 @@ update_device = function(self, device, action, create)
local connected = databaseconnect()
if not create then
local sql = "SELECT * FROM devices_to_classes WHERE device_id='"..provdb.escape(device.value.device_id.value).."' LIMIT 1"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
device.value.device_id.errtxt = "Device does not exist"
end
end
if success then
- if not saved_devices[device.value.device_id.value] then get_device(self, device.value.device_id.value) end
- if not saved_device_params[device.value.device_id.value] then get_device_params(self, device.value.device_id.value) end
+ if not saved_devices[device.value.device_id.value] then mymodule.get_device(self, device.value.device_id.value) end
+ if not saved_device_params[device.value.device_id.value] then mymodule.get_device_params(self, device.value.device_id.value) end
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
if create then
sql = "SELECT nextval('provisioning_device_seq')"
- local tmp = getselectresponse(sql, true)
+ local tmp = mymodule.getselectresponse(sql, true)
if tmp and #tmp>0 then
device.value.device_id.value = tmp[1].nextval
end
end
sql = "DELETE FROM devices_to_classes WHERE device_id='"..provdb.escape(device.value.device_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
-- Insert the device to class entries
for n,c in pairs(device.value.classes.value) do
if c.value ~= "" then
sql = "INSERT INTO devices_to_classes VALUES('"..provdb.escape(device.value.device_id.value).."', '"..provdb.escape(c.value).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
local s = saved_device_params[device.value.device_id.value]
- callscript(self, updatedevicescriptfile, device, saved_devices[device.value.device_id.value], get_device_params(self, device.value.device_id.value), s)
+ callscript(self, updatedevicescriptfile, device, saved_devices[device.value.device_id.value], mymodule.get_device_params(self, device.value.device_id.value), s)
saved_devices[device.value.device_id.value] = device
end
if connected then provdb.databasedisconnect() end
@@ -1362,34 +1357,34 @@ update_device = function(self, device, action, create)
return device
end
-get_delete_device = function(self, clientdata)
+mymodule.get_delete_device = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.device_id = cfe({ value=clientdata.device_id or "", label="Device ID" })
return cfe({ type="group", value=retval, label="Delete Device" })
end
-delete_device = function(self, delreq)
+mymodule.delete_device = function(self, delreq)
local device_id = delreq.value.device_id.value
delreq.errtxt = "Failed to delete device"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM devices_to_classes WHERE device_id='"..provdb.escape(device_id).."' LIMIT 1"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.device_id.errtxt = "Device does not exist"
else
- if not saved_device_params[device_id] then get_device_params(self, device_id) end
- if not saved_devices[device_id] then get_device(self, device_id) end
+ if not saved_device_params[device_id] then mymodule.get_device_params(self, device_id) end
+ if not saved_devices[device_id] then mymodule.get_device(self, device_id) end
sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
sql = "DELETE FROM provisioning_values WHERE device_id='"..provdb.escape(device_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "DELETE FROM devices_to_classes WHERE device_id='"..provdb.escape(device_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
delreq.errtxt = nil
callscript(self, deletedevicescriptfile, saved_devices[device_id], saved_device_params[device_id])
@@ -1406,18 +1401,18 @@ delete_device = function(self, delreq)
return delreq
end
-get_editable_device_params = function(self, clientdata, action)
+mymodule.get_editable_device_params = function(self, clientdata, action)
clientdata = clientdata or {}
- return get_device_params(self, clientdata.device_id, true)
+ return mymodule.get_device_params(self, clientdata.device_id, true)
end
-get_all_device_params = function(self, clientdata, action)
+mymodule.get_all_device_params = function(self, clientdata, action)
clientdata = clientdata or {}
- return get_device_params(self, clientdata.device_id, false)
+ return mymodule.get_device_params(self, clientdata.device_id, false)
end
-- This function is used by scripts, do not change prototype
-get_device_params = function(self, device_id, editable)
+mymodule.get_device_params = function(self, device_id, editable)
local retval = {}
retval.device_id = cfe({value=device_id or "", label="Device ID", seq=0})
local errtxt = "Cannot find device"
@@ -1426,12 +1421,12 @@ get_device_params = function(self, device_id, editable)
local connected = databaseconnect()
-- First, just check to see if device_id exists
local sql = "SELECT * FROM devices_to_classes WHERE device_id='"..provdb.escape(device_id).."' LIMIT 1"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
errtxt = nil
-- Next, get all of the param groups
sql = "SELECT * FROM provisioning_groups"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
-- Loop through the groups and put them into the result
for i,g in ipairs(tmp) do
retval[g.name] = g
@@ -1446,13 +1441,13 @@ get_device_params = function(self, device_id, editable)
if editable then
sql = sql.." AND g2p.editable='t'"
end
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
-- Loop through the params to figure out options and put them into the groups
for i,p in ipairs(tmp) do
-- Options
if (p.type == "select") then
sql = "SELECT * FROM provisioning_options WHERE param_id='"..provdb.escape(p.param_id).."' ORDER BY seq ASC"
- p.option = getselectresponse(sql) or {}
+ p.option = mymodule.getselectresponse(sql) or {}
end
-- Groups
if not retval[p.group].value then
@@ -1491,7 +1486,7 @@ get_device_params = function(self, device_id, editable)
return output
end
-get_class_options = function(self, clientdata)
+mymodule.get_class_options = function(self, clientdata)
clientdata = clientdata or {}
local class_id = clientdata.class_id
local retval = {}
@@ -1499,7 +1494,7 @@ get_class_options = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Class Values" })
end
-get_class_values = function(self, retval)
+mymodule.get_class_values = function(self, retval)
retval.errtxt = "Failed to find class"
if not validator.is_integer(retval.value.class_id.value) then
retval.value.class_id.errtxt = "Invalid class ID"
@@ -1508,7 +1503,7 @@ get_class_values = function(self, retval)
local connected = databaseconnect()
-- First, just check to see if class_id exists
local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..provdb.escape(retval.value.class_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
retval.errtxt = nil
retval.value.label = cfe({ value=tmp[1].label or "", label="Label", seq=3})
@@ -1518,7 +1513,7 @@ get_class_values = function(self, retval)
"FROM (provisioning_classes t JOIN classes_to_param_groups t2g USING(class_id) JOIN provisioning_groups g USING(group_id) "..
"JOIN param_groups_to_params g2p USING(group_id) JOIN provisioning_params p USING(param_id)) "..
"WHERE t.class_id='"..provdb.escape(retval.value.class_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
-- Loop through the params and put them into the groups
for i,p in ipairs(tmp) do
if p.type == "boolean" then
@@ -1542,16 +1537,16 @@ get_class_values = function(self, retval)
return retval
end
-set_editable_device_params = function(self, params)
- return set_device_params(self, params, true)
+mymodule.set_editable_device_params = function(self, params)
+ return mymodule.set_device_params(self, params, true)
end
-set_all_device_params = function(self, params)
- return set_device_params(self, params, false)
+mymodule.set_all_device_params = function(self, params)
+ return mymodule.set_device_params(self, params, false)
end
-- This function is used by scripts, do not change prototype
-set_device_params = function(self, params, editable)
+mymodule.set_device_params = function(self, params, editable)
-- Validate the settings
local success = validateparam(params)
local errtxt
@@ -1560,20 +1555,20 @@ set_device_params = function(self, params, editable)
local connected = databaseconnect()
success = validateparamcoded(self, params)
local sql = "SELECT * FROM devices_to_classes WHERE device_id='"..provdb.escape(params.value.device_id.value).."' LIMIT 1"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
errtxt = "Device does not exist"
end
if success then
- if not saved_device_params[params.value.device_id.value] then get_device_params(self, params.value.device_id.value) end
+ if not saved_device_params[params.value.device_id.value] then mymodule.get_device_params(self, params.value.device_id.value) end
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
if not editable then
-- Delete all values for this device (can't do this if only updating editable)
sql = "DELETE FROM provisioning_values WHERE device_id='"..provdb.escape(params.value.device_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
-- Loop through the groups and params
for group,v in pairs(params.value) do
@@ -1581,25 +1576,25 @@ set_device_params = function(self, params, editable)
for name,param in pairs(v.value) do
if editable then
sql = "DELETE FROM provisioning_values WHERE device_id='"..provdb.escape(params.value.device_id.value).."' AND group_name='"..provdb.escape(group).."' AND param_id='"..provdb.escape(param.param_id).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
if param.value ~= param.default then
sql = "INSERT INTO provisioning_values VALUES('"..provdb.escape(params.value.device_id.value).."', '"..provdb.escape(group).."', '"..provdb.escape(param.param_id).."', '"..provdb.escape(tostring(param.value)).."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
end
end
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
local tmp = saved_device_params[params.value.device_id.value]
local p = params
if not editable then
saved_device_params[params.value.device_id.value] = params
else
- p = get_device_params(self, params.value.device_id.value)
+ p = mymodule.get_device_params(self, params.value.device_id.value)
end
callscript(self, updatedeviceparamsscriptfile, p, tmp)
end
@@ -1617,10 +1612,10 @@ set_device_params = function(self, params, editable)
return params
end
-fetch_device_values = function(self, search)
+mymodule.fetch_device_values = function(self, search)
local res, err = pcall(function()
local connected = databaseconnect()
- search = search_device_values(self, search)
+ search = mymodule.search_device_values(self, search)
if search.errtxt then
-- Just return the error
elseif #search.value.result.value == 0 then
@@ -1628,7 +1623,7 @@ fetch_device_values = function(self, search)
elseif #search.value.result.value > 1 then
search.errtxt = "Multiple devices found"
else
- search.value.values = get_device_values(self, search.value.result.value[1].device_id)
+ search.value.values = mymodule.get_device_values(self, search.value.result.value[1].device_id)
search.value.values.seq = 5
end
if connected then provdb.databasedisconnect() end
@@ -1641,7 +1636,7 @@ fetch_device_values = function(self, search)
return search
end
-get_device_values = function(self, device_id)
+mymodule.get_device_values = function(self, device_id)
local retval = {}
local errtxt
if device_id and device_id ~= "" then
@@ -1651,7 +1646,7 @@ get_device_values = function(self, device_id)
"FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING(class_id) JOIN provisioning_groups g USING(group_id) "..
"JOIN param_groups_to_params g2p USING(group_id) JOIN provisioning_params p USING(param_id)) LEFT JOIN provisioning_values v ON(d2t.device_id=v.device_id AND p.param_id=v.param_id AND g.name=v.group_name ) "..
"WHERE d2t.device_id='"..provdb.escape(device_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
-- Loop through the params and put them into the groups
for i,p in ipairs(tmp) do
if p.type == "boolean" then
@@ -1674,7 +1669,7 @@ get_device_values = function(self, device_id)
return cfe({type="structure", value=retval, label="Parameter Values", errtxt=errtxt})
end
-get_search_options = function()
+mymodule.get_search_options = function()
local errtxt
retval = {}
retval.id = cfe({type="select", value="device_id", label="Parameter", option={"device_id"}, seq=1})
@@ -1684,7 +1679,7 @@ get_search_options = function()
local connected = databaseconnect()
-- Get the group/parameter options
local sql = "SELECT g.name AS group_name, p.name AS param_name FROM provisioning_groups g JOIN param_groups_to_params USING(group_id) JOIN provisioning_params p USING(param_id) GROUP BY g.name, p.name ORDER BY g.name ASC, p.name ASC"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
local blankopt = {}
local blankexists = {}
for i,v in ipairs(tmp) do
@@ -1706,7 +1701,7 @@ get_search_options = function()
return cfe({type="group", value=retval, label="Device Search", errtxt=errtxt})
end
-search_device_values = function(self, search)
+mymodule.search_device_values = function(self, search)
local success = true
success = modelfunctions.validateselect(search.value.id) and success
success = modelfunctions.validateselect(search.value.comparison) and success
@@ -1743,7 +1738,7 @@ search_device_values = function(self, search)
sql = sql.." p.name='"..provdb.escape(param).."' AND CASE WHEN v.value IS NOT NULL THEN v.value WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END"..provdb.escape(search.value.comparison.value).."'"..provdb.escape(search.value.value.value).."'"
end
sql = sql.." ORDER BY d2t.device_id ASC"
- search.value.result.value = getselectresponse(sql)
+ search.value.result.value = mymodule.getselectresponse(sql)
if connected then provdb.databasedisconnect() end
end)
if not res and err then
@@ -1755,7 +1750,7 @@ search_device_values = function(self, search)
return search
end
-get_param_options = function(self, clientdata)
+mymodule.get_param_options = function(self, clientdata)
clientdata = clientdata or {}
local param_id = clientdata.param_id
local retval = {}
@@ -1769,14 +1764,14 @@ get_param_options = function(self, clientdata)
local connected = databaseconnect()
-- First, just check to see if param_id exists
local sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param_id).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if tmp and #tmp > 0 then
errtxt = nil
retval.name.value = tmp[1].name
retval.label.value = tmp[1].label
-- Next, get all of the param options
sql = "SELECT * FROM provisioning_options WHERE param_id='"..provdb.escape(param_id).."' ORDER BY seq ASC"
- local tmp = getselectresponse(sql) or {}
+ local tmp = mymodule.getselectresponse(sql) or {}
for i,t in ipairs(tmp) do
retval.options.value[#retval.options.value + 1] = t.value..","..t.label
end
@@ -1790,7 +1785,7 @@ get_param_options = function(self, clientdata)
return cfe({ type="group", value=retval, label="Provisioning Parameter Options", errtxt=errtxt })
end
-set_param_options = function(self, options)
+mymodule.set_param_options = function(self, options)
local success = true
local errtxt
-- Validate the settings
@@ -1799,17 +1794,17 @@ set_param_options = function(self, options)
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(options.value.param_id.value).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if not tmp or #tmp == 0 then
success = false
errtxt = "Parameter does not exist"
end
if success then
local sql = "BEGIN TRANSACTION"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
-- Delete all options for this device
sql = "DELETE FROM provisioning_options WHERE param_id='"..provdb.escape(options.value.param_id.value).."'"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
-- Loop through the options
for i,o in ipairs(options.value.options.value) do
local v,l = string.match(o, "^%s*([^,]+),%s*(.*%S)%s*$")
@@ -1820,10 +1815,10 @@ set_param_options = function(self, options)
l = v
end
sql = "INSERT INTO provisioning_options VALUES('"..provdb.escape(options.value.param_id.value).."', '"..provdb.escape(l).."', '"..provdb.escape(v).."', '"..i.."')"
- runsqlcommand(sql, true)
+ mymodule.runsqlcommand(sql, true)
end
sql = "COMMIT"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
end
if connected then provdb.databasedisconnect() end
end)
@@ -1839,16 +1834,16 @@ set_param_options = function(self, options)
return options
end
-function get_filedetails(self, clientdata)
+function mymodule.get_filedetails(self, clientdata)
clientdata = clientdata or {}
return modelfunctions.getfiledetails(clientdata.filename, scriptfiles)
end
-function update_filedetails(self, filedetails)
+function mymodule.update_filedetails(self, filedetails)
return modelfunctions.setfiledetails(self, filedetails, scriptfiles, validatefiledetails)
end
-function list_files()
+function mymodule.list_files()
local retval = {}
for i,file in ipairs(scriptfiles) do
local details = fs.stat(file) or {}
@@ -1859,61 +1854,61 @@ function list_files()
return cfe({ type="structure", value=retval, label="List of Provisioning Script files" })
end
-function get_database()
+function mymodule.get_database()
local devices = cfe({ type="boolean", value=false, label="Include Device Data" })
return cfe({ type="group", value={devices=devices}, label="Provisioning Database Dump" })
end
-function dump_database(self, db)
+function mymodule.dump_database(self, db)
local res, err = pcall(function()
local connected = databaseconnect()
local lines = {}
local sql = "SELECT name, label, seq FROM provisioning_class_groups ORDER BY name, label"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO provisioning_class_groups VALUES(default, '"..provdb.escape(t.name).."', '"..provdb.escape(t.label).."', '"..provdb.escape(t.seq).."');"
end
sql = "SELECT g.name AS group, c.label, c.seq FROM provisioning_classes c JOIN provisioning_class_groups g USING(class_group_id) ORDER BY g.name, c.label"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='"..provdb.escape(t.group).."'), '"..provdb.escape(t.label).."', '"..provdb.escape(t.seq).."');"
end
sql = "SELECT name, label, seq FROM provisioning_groups ORDER BY name, label"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO provisioning_groups VALUES(default, '"..provdb.escape(t.name).."', '"..provdb.escape(t.label).."', '"..provdb.escape(t.seq).."');"
end
sql = "SELECT name, type, label, descr, value, seq, regexp, validate FROM provisioning_params ORDER BY name"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO provisioning_params VALUES(default, '"..provdb.escape(t.name).."', '"..provdb.escape(t.type).."', '"..provdb.escape(t.label).."', '"..provdb.escape(t.descr).."', '"..provdb.escape(t.value).."', '"..provdb.escape(t.seq).."', '"..provdb.escape(t.regexp).."', '"..provdb.escape(t.validate).."');"
end
sql = "SELECT p.name AS param, o.label, o.value, o.seq FROM provisioning_options o JOIN provisioning_params p USING(param_id) ORDER BY p.name, o.seq, o.label"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='"..provdb.escape(t.param).."'), '"..provdb.escape(t.label).."', '"..provdb.escape(t.value).."', '"..provdb.escape(t.seq).."');"
end
sql = "SELECT c.label AS class, g.label AS group FROM provisioning_classes c JOIN classes_to_param_groups USING(class_id) JOIN provisioning_groups g USING(group_id) ORDER BY c.label, g.label"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='"..provdb.escape(t.class).."'), (SELECT group_id FROM provisioning_groups WHERE label='"..provdb.escape(t.group).."'));"
end
sql = "SELECT p.name AS param, g.label AS group, t.value, t.editable FROM provisioning_params p JOIN param_groups_to_params t USING(param_id) JOIN provisioning_groups g USING(group_id) ORDER BY p.name, g.label"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for i,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='"..provdb.escape(t.group).."'), (SELECT param_id FROM provisioning_params WHERE name='"..provdb.escape(t.param).."'), '"..provdb.escape(t.value).."', '"..provdb.escape(t.editable).."');"
end
if db.value.devices and db.value.devices.value then
sql = "SELECT device_id FROM devices_to_classes GROUP BY device_id ORDER BY device_id ASC"
- devices = getselectresponse(sql)
+ devices = mymodule.getselectresponse(sql)
for i,d in ipairs(devices) do
sql = "SELECT label FROM devices_to_classes JOIN provisioning_classes USING(class_id) WHERE device_id='"..provdb.escape(d.device_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for j,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO devices_to_classes VALUES("..provdb.escape(i)..", (SELECT class_id FROM provisioning_classes WHERE label='"..provdb.escape(t.label).."'));"
end
sql = "SELECT group_name, p.name AS param, v.value FROM provisioning_values v JOIN provisioning_params p USING(param_id) WHERE device_id='"..provdb.escape(d.device_id).."'"
- tmp = getselectresponse(sql)
+ tmp = mymodule.getselectresponse(sql)
for j,t in ipairs(tmp) do
lines[#lines+1] = "INSERT INTO provisioning_values VALUES("..provdb.escape(i)..", '"..provdb.escape(t.group_name).."', (SELECT param_id FROM provisioning_params WHERE name='"..provdb.escape(t.param).."'), '"..provdb.escape(t.value).."');"
end
@@ -1929,7 +1924,7 @@ function dump_database(self, db)
return db
end
-function get_file(self, clientdata)
+function mymodule.get_file(self, clientdata)
clientdata = clientdata or {}
local mac = clientdata.mac
local ip = clientdata.ip
@@ -1947,30 +1942,30 @@ function get_file(self, clientdata)
-- Add the device to the table of requests
local sql = "SELECT * FROM provisioning_requests WHERE mac='"..provdb.escape(string.upper(mac)).."'"
- local requests = getselectresponse(sql)
+ local requests = mymodule.getselectresponse(sql)
if requests and #requests > 0 then
sql = "UPDATE provisioning_requests SET ip='"..provdb.escape(ip).."', agent='"..provdb.escape(agent).."', date=now() WHERE mac='"..provdb.escape(string.upper(mac)).."'"
else
sql = "INSERT INTO provisioning_requests VALUES('"..provdb.escape(string.upper(mac)).."', '"..provdb.escape(ip).."', '"..provdb.escape(agent).."', now())"
end
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
-- Now, let's see if this device exists
- result = get_search_options()
+ result = mymodule.get_search_options()
result.value.id.value = "device.mac"
result.value.value.value = string.upper(mac)
- result = fetch_device_values(self, result)
+ result = mymodule.fetch_device_values(self, result)
-- If can't find the device, return a file with default settings
if #result.value.result.value == 0 then
-- Determine which class to use (need a class that specifies a template)
- local c = list_classes()
+ local c = mymodule.list_classes()
local class = callscript(self, determineclassscriptfile, agent, c)
if class then
- local options = get_class_options(self, {})
+ local options = mymodule.get_class_options(self, {})
options.value.class_id.value = class
- result = get_class_values(self, options)
+ result = mymodule.get_class_values(self, options)
else
result.errtxt = "Unknown device"
end
@@ -1985,7 +1980,7 @@ function get_file(self, clientdata)
return result
end
-function put_file(self, clientdata)
+function mymodule.put_file(self, clientdata)
clientdata = clientdata or {}
local mac = clientdata.mac
local data = clientdata.data
@@ -2001,10 +1996,10 @@ function put_file(self, clientdata)
local connected = databaseconnect()
-- Now, let's see if this device exists
- local search = get_search_options()
+ local search = mymodule.get_search_options()
search.value.id.value = "device.mac"
search.value.value.value = string.upper(mac)
- search = search_device_values(self, search)
+ search = mymodule.search_device_values(self, search)
if search.errtxt then
retval.errtxt = search.errtxt
elseif #search.value.result.value == 0 then
@@ -2024,17 +2019,17 @@ function put_file(self, clientdata)
return retval
end
-list_requests = function()
+mymodule.list_requests = function()
local retval = {}
local errtxt
-- Get the templates from the DB
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_requests ORDER BY date DESC"
- retval = getselectresponse(sql)
+ retval = mymodule.getselectresponse(sql)
-- Get the corresponding device_id's for each request
sql = "SELECT * FROM provisioning_values WHERE param_id=(SELECT param_id FROM provisioning_params WHERE name='mac')"
- local ids = getselectresponse(sql)
+ local ids = mymodule.getselectresponse(sql)
local reverseids = {}
for i,v in ipairs(ids) do
reverseids[v.value] = v.device_id
@@ -2051,26 +2046,26 @@ list_requests = function()
return cfe({ type="structure", value=retval, label="List of Requests", errtxt=errtxt })
end
-get_delete_request = function(self, clientdata)
+mymodule.get_delete_request = function(self, clientdata)
clientdata = clientdata or {}
local retval = {}
retval.mac = cfe({ value=clientdata.mac or "", label="MAC Address" })
return cfe({ type="group", value=retval, label="Delete Request" })
end
-delete_request = function(self, delreq)
+mymodule.delete_request = function(self, delreq)
local mac = delreq.value.mac.value
delreq.errtxt = "Failed to delete request"
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_requests WHERE mac='"..provdb.escape(string.upper(mac)).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
delreq.value.mac.errtxt = "Request does not exist"
else
-- Remove the request
sql = "DELETE FROM provisioning_requests WHERE mac='"..provdb.escape(string.upper(mac)).."'"
- runsqlcommand(sql)
+ mymodule.runsqlcommand(sql)
delreq.errtxt = nil
end
if connected then provdb.databasedisconnect() end
@@ -2082,7 +2077,7 @@ delete_request = function(self, delreq)
return delreq
end
-get_request = function(self, clientdata)
+mymodule.get_request = function(self, clientdata)
clientdata = clientdata or {}
local mac = clientdata.mac
local retval = {}
@@ -2090,24 +2085,24 @@ get_request = function(self, clientdata)
return cfe({ type="group", value=retval, label="Create Device from Request" })
end
-create_from_request = function(self, request)
+mymodule.create_from_request = function(self, request)
success = false
local res, err = pcall(function()
local connected = databaseconnect()
local sql = "SELECT * FROM provisioning_requests WHERE mac='"..provdb.escape(string.upper(request.value.mac.value)).."'"
- local tmp = getselectresponse(sql)
+ local tmp = mymodule.getselectresponse(sql)
if #tmp == 0 then
request.value.mac.errtxt = "Request does not exist"
else
-- Determine which class to use (need a class that specifies a template)
- local c = list_classes()
+ local c = mymodule.list_classes()
local class, group = callscript(self, determineclassscriptfile, tmp[1].agent, c)
-- Create the device
- local device = get_device(self, nil, true)
+ local device = mymodule.get_device(self, nil, true)
if class and group and device.value.classes.value[group] then
device.value.classes.value[group].value = class
- device = create_device(self, device)
+ device = mymodule.create_device(self, device)
if device.errtxt then
request.errtxt = {device.errtxt}
for n,v in pairs(device.value) do
@@ -2117,16 +2112,16 @@ create_from_request = function(self, request)
end
request.errtxt = table.concat(request.errtxt, "\n")
else
- local params = get_device_params(self, device.value.device_id.value)
+ local params = mymodule.get_device_params(self, device.value.device_id.value)
-- Set the MAC Address
if params.value.device and params.value.device.value.mac then
params.value.device.value.mac.value = string.upper(request.value.mac.value)
- params = set_device_params(self, params)
+ params = mymodule.set_device_params(self, params)
end
if params.errtxt then
request.errtxt = params.errtxt
- local req = get_delete_device(self, {device_id = device.value.device_id.value})
- delete_device(self, req)
+ local req = mymodule.get_delete_device(self, {device_id = device.value.device_id.value})
+ mymodule.delete_device(self, req)
else
success = true
request.value.device_id = device.value.device_id
@@ -2147,3 +2142,5 @@ create_from_request = function(self, request)
end
return request
end
+
+return mymodule