summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2013-10-20 23:28:40 +0000
committerTed Trask <ttrask01@yahoo.com>2013-10-20 23:28:40 +0000
commit24e737f23a7ef3a5f5871d75a23470d6ee27462e (patch)
tree3262bb0f9dad15ab353f73e1638b14a10f520fd5
parentee0a9b946697ccc610b52b6dc182030fba225991 (diff)
downloadacf-provisioning-24e737f23a7ef3a5f5871d75a23470d6ee27462e.tar.bz2
acf-provisioning-24e737f23a7ef3a5f5871d75a23470d6ee27462e.tar.xz
Remove all calls to 'module' in preparation for move to Lua 5.2
Use mymodule parameter for module definition. This was also helpful in revealing places where the code relied on the global environment.
-rw-r--r--provisioning-controller.lua84
-rw-r--r--provisioning-model.lua463
-rw-r--r--provisioning-scripts.lua26
3 files changed, 287 insertions, 286 deletions
diff --git a/provisioning-controller.lua b/provisioning-controller.lua
index 2397a90..02f03d1 100644
--- a/provisioning-controller.lua
+++ b/provisioning-controller.lua
@@ -1,159 +1,161 @@
-module (..., package.seeall)
+local mymodule = {}
-default_action = "listdevices"
+mymodule.default_action = "listdevices"
-listtemplates = function( self )
+mymodule.listtemplates = function( self )
return self.model.list_templates()
end
-edittemplate = function( self )
+mymodule.edittemplate = function( self )
return self.handle_form(self, self.model.get_template, self.model.update_template, self.clientdata, "Save", "Edit Template", "Template Saved")
end
-createtemplate = function( self )
+mymodule.createtemplate = function( self )
return self.handle_form(self, self.model.get_template, self.model.create_template, self.clientdata, "Create", "Create Template", "Template Created")
end
-deletetemplate = function( self )
+mymodule.deletetemplate = function( self )
return self.handle_form(self, self.model.get_delete_template, self.model.delete_template, self.clientdata, "Delete", "Delete Template", "Template Deleted")
end
-listclassgroups = function( self )
+mymodule.listclassgroups = function( self )
return self.model.list_class_groups()
end
-editclassgroup = function( self )
+mymodule.editclassgroup = function( self )
return self.handle_form(self, self.model.get_class_group, self.model.update_class_group, self.clientdata, "Save", "Edit Class Group", "Class Group Saved")
end
-createclassgroup = function( self )
+mymodule.createclassgroup = function( self )
return self.handle_form(self, self.model.get_class_group, self.model.create_class_group, self.clientdata, "Create", "Create Class Group", "Parameter Class Created")
end
-deleteclassgroup = function( self )
+mymodule.deleteclassgroup = function( self )
return self.handle_form(self, self.model.get_delete_class_group, self.model.delete_class_group, self.clientdata, "Delete", "Delete Class Group", "Class Group Deleted")
end
-listclasses = function( self )
+mymodule.listclasses = function( self )
return self.model.list_classes()
end
-editclass = function( self )
+mymodule.editclass = function( self )
return self.handle_form(self, self.model.get_class, self.model.update_class, self.clientdata, "Save", "Edit Class", "Class Saved")
end
-createclass = function( self )
+mymodule.createclass = function( self )
return self.handle_form(self, self.model.get_class, self.model.create_class, self.clientdata, "Create", "Create Class", "Class Created")
end
-deleteclass = function( self )
+mymodule.deleteclass = function( self )
return self.handle_form(self, self.model.get_delete_class, self.model.delete_class, self.clientdata, "Delete", "Delete Class", "Class Deleted")
end
-getclassvalues = function( self )
+mymodule.getclassvalues = function( self )
return self.handle_form(self, self.model.get_class_options, self.model.get_class_values, self.clientdata, "Fetch", "Get Device Values")
end
-listgroups = function( self )
+mymodule.listgroups = function( self )
return self.model.list_groups()
end
-editgroup = function( self )
+mymodule.editgroup = function( self )
return self.handle_form(self, self.model.get_group, self.model.update_group, self.clientdata, "Save", "Edit Parameter Group", "Parameter Group Saved")
end
-creategroup = function( self )
+mymodule.creategroup = function( self )
return self.handle_form(self, self.model.get_group, self.model.create_group, self.clientdata, "Create", "Create Parameter Group", "Parameter Group Created")
end
-deletegroup = function(self )
+mymodule.deletegroup = function(self )
return self.handle_form(self, self.model.get_delete_group, self.model.delete_group, self.clientdata, "Delete", "Delete Parameter Group", "Parameter Group Deleted")
end
-listparams = function( self )
+mymodule.listparams = function( self )
return self.model.list_params()
end
-editparam = function( self )
+mymodule.editparam = function( self )
return self.handle_form(self, self.model.get_param, self.model.update_param, self.clientdata, "Save", "Edit Parameter", "Parameter Saved")
end
-createparam = function( self )
+mymodule.createparam = function( self )
return self.handle_form(self, self.model.get_param, self.model.create_param, self.clientdata, "Create", "Create Parameter", "Parameter Created")
end
-deleteparam = function( self )
+mymodule.deleteparam = function( self )
return self.handle_form(self, self.model.get_delete_param, self.model.delete_param, self.clientdata, "Delete", "Delete Parameter", "Parameter Deleted")
end
-listdevices = function( self )
+mymodule.listdevices = function( self )
return self.model.list_devices()
end
-editdevice = function( self )
+mymodule.editdevice = function( self )
return self.handle_form(self, self.model.get_existing_device, self.model.update_device, self.clientdata, "Save", "Edit Device", "Device Saved")
end
-createdevice = function( self )
+mymodule.createdevice = function( self )
return self.handle_form(self, self.model.get_new_device, self.model.create_device, self.clientdata, "Create", "Create Device", "Device Created")
end
-duplicatedevice = function( self )
+mymodule.duplicatedevice = function( self )
return self.handle_form(self, self.model.get_existing_device, self.model.create_device, self.clientdata, "Duplicate", "Duplicate Device", "Duplicate Device Created")
end
-deletedevice = function( self )
+mymodule.deletedevice = function( self )
return self.handle_form(self, self.model.get_delete_device, self.model.delete_device, self.clientdata, "Delete", "Delete Device", "Device Deleted")
end
-editdeviceparams = function( self )
+mymodule.editdeviceparams = function( self )
return self.handle_form(self, self.model.get_editable_device_params, self.model.set_editable_device_params, self.clientdata, "Save", "Edit Device Parameters", "Device Parameters Saved")
end
-overridedeviceparams = function( self )
+mymodule.overridedeviceparams = function( self )
return self.handle_form(self, self.model.get_all_device_params, self.model.set_all_device_params, self.clientdata, "Save", "Override Device Parameters", "Device Parameters Saved")
end
-getdevicevalues = function( self )
+mymodule.getdevicevalues = function( self )
return self.handle_form(self, self.model.get_search_options, self.model.fetch_device_values, self.clientdata, "Search", "Get Device Values")
end
-searchdevices = function( self )
+mymodule.searchdevices = function( self )
return self.handle_form(self, self.model.get_search_options, self.model.search_device_values, self.clientdata, "Search", "Search Device Parameters")
end
-editoptions = function( self )
+mymodule.editoptions = function( self )
return self.handle_form(self, self.model.get_param_options, self.model.set_param_options, self.clientdata, "Save", "Edit Parameter Options", "Parameter Options Saved")
end
-listfiles = function( self )
+mymodule.listfiles = function( self )
return self.model.list_files()
end
-editfile = function( self )
+mymodule.editfile = function( self )
return self.handle_form(self, self.model.get_filedetails, self.model.update_filedetails, self.clientdata, "Save", "Edit Script File", "Script File Saved")
end
-dumpdatabase = function( self )
+mymodule.dumpdatabase = function( self )
return self.handle_form(self, self.model.get_database, self.model.dump_database, self.clientdata, "Submit", "Dump Provisioning Database")
end
-getfile = function( self )
+mymodule.getfile = function( self )
return self.model.get_file(self, self.clientdata)
end
-putfile = function( self )
+mymodule.putfile = function( self )
return self.model.put_file(self, self.clientdata)
end
-listrequests = function( self )
+mymodule.listrequests = function( self )
return self.model.list_requests()
end
-deleterequest = function( self )
+mymodule.deleterequest = function( self )
return self.handle_form(self, self.model.get_delete_request, self.model.delete_request, self.clientdata, "Delete", "Delete Request", "Request Deleted")
end
-createdevicefromrequest = function( self )
+mymodule.createdevicefromrequest = function( self )
return self.handle_form(self, self.model.get_request, self.model.create_from_request, self.clientdata, "Create", "Create Device", "Device Created")
end
+
+return mymodule
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
diff --git a/provisioning-scripts.lua b/provisioning-scripts.lua
index 4741062..325b07b 100644
--- a/provisioning-scripts.lua
+++ b/provisioning-scripts.lua
@@ -1,14 +1,14 @@
-module (..., package.seeall)
+local mymodule = {}
-- if a table_creation_script does not create the named table or throw an exception then you will get an infinite loop, so be careful
-- List of each device that we manage
-provisioning_device_seq = {
+mymodule.provisioning_device_seq = {
"CREATE SEQUENCE provisioning_device_seq",
}
-- Multi-to-multi mapping of devices to classes
-devices_to_classes = {
+mymodule.devices_to_classes = {
"CREATE TABLE devices_to_classes (device_id INTEGER, class_id INTEGER REFERENCES provisioning_classes)",
"CREATE INDEX d2c_device_idx ON devices_to_classes (device_id)",
"CREATE INDEX d2c_class_idx ON devices_to_classes (class_id)",
@@ -27,14 +27,14 @@ devices_to_classes = {
}
-- List of different class groups
-provisioning_class_groups = {
+mymodule.provisioning_class_groups = {
"CREATE TABLE provisioning_class_groups (class_group_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, label VARCHAR(255) UNIQUE, seq INTEGER)",
"INSERT INTO provisioning_class_groups VALUES(default, 'device', 'Device Model', '1')",
"INSERT INTO provisioning_class_groups VALUES(default, 'services', 'Services', '2')",
}
-- List of different device classes
-provisioning_classes = {
+mymodule.provisioning_classes = {
"CREATE TABLE provisioning_classes (class_id SERIAL PRIMARY KEY, class_group_id INTEGER REFERENCES provisioning_class_groups, label VARCHAR(255), seq INTEGER)",
"CREATE INDEX classes_group_idx ON provisioning_classes (class_group_id)",
"CREATE INDEX classes_label_idx ON provisioning_classes (label)",
@@ -56,7 +56,7 @@ provisioning_classes = {
}
-- Multi-to-multi mapping of classes to parameter groups
-classes_to_param_groups = {
+mymodule.classes_to_param_groups = {
"CREATE TABLE classes_to_param_groups (class_id INTEGER REFERENCES provisioning_classes, group_id INTEGER REFERENCES provisioning_groups)",
"CREATE INDEX c2g_class_idx ON classes_to_param_groups (class_id)",
"CREATE INDEX c2g_group_idx ON classes_to_param_groups (group_id)",
@@ -157,7 +157,7 @@ classes_to_param_groups = {
}
-- List of different parameter groups
-provisioning_groups = {
+mymodule.provisioning_groups = {
"CREATE TABLE provisioning_groups (group_id SERIAL PRIMARY KEY, name VARCHAR(255), label VARCHAR(255) UNIQUE, seq INTEGER)",
"CREATE INDEX groups_name_idx ON provisioning_groups (name)",
"INSERT INTO provisioning_groups VALUES(default, 'device', 'Linksys ATA Device', '1')",
@@ -218,7 +218,7 @@ provisioning_groups = {
}
-- Multi-to-multi mapping of parameter groups to parameters
-param_groups_to_params = {
+mymodule.param_groups_to_params = {
"CREATE TABLE param_groups_to_params (group_id INTEGER REFERENCES provisioning_groups, param_id INTEGER REFERENCES provisioning_params, value VARCHAR(255), editable BOOLEAN)",
"CREATE INDEX g2p_group_idx ON param_groups_to_params (group_id)",
"CREATE INDEX g2p_param_idx ON param_groups_to_params (param_id)",
@@ -681,7 +681,7 @@ param_groups_to_params = {
}
-- List of each parameter used in any way for any device - mostly for how to display
-provisioning_params = {
+mymodule.provisioning_params = {
"CREATE TABLE provisioning_params (param_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, type VARCHAR(255), label VARCHAR(255), descr VARCHAR(255), value VARCHAR(255), seq INTEGER, regexp VARCHAR(255), validate text)",
"CREATE INDEX params_name_idx ON provisioning_params (name)",
"INSERT INTO provisioning_params VALUES(default, 'mac', 'text', 'MAC Address', 'Capitalized hex digits with no puncuation', '', '1', '^%x%x%x%x%x%x%x%x%x%x%x%x$', E'local self, value, params = ...\nvalue = string.upper(value)\nlocal others = self.getselectresponse(\"SELECT count(*) FROM provisioning_values WHERE param_id=\\'\"..params.value.device.value.mac.param_id..\"\\' AND device_id!=\\'\"..params.value.device_id.value..\"\\' AND value=\\'\"..value..\"\\'\")\nif tonumber(others[1].count) > 0 then\n\treturn value, \"MAC Address must be unique\"\nend\nreturn value')",
@@ -719,7 +719,7 @@ provisioning_params = {
}
-- All of the (non-default) parameter values for all devices are stored here
-provisioning_values = {
+mymodule.provisioning_values = {
-- device_id is a device id from provisioning_device_seq and param_id is a param id from provisioning_params
"CREATE TABLE provisioning_values (device_id INTEGER, group_name VARCHAR(255), param_id INTEGER REFERENCES provisioning_params, value VARCHAR(255))",
"CREATE INDEX values_device_idx ON provisioning_values (device_id)",
@@ -742,7 +742,7 @@ provisioning_values = {
}
-- List of options for parameters
-provisioning_options = {
+mymodule.provisioning_options = {
"CREATE TABLE provisioning_options (param_id INTEGER REFERENCES provisioning_params, label VARCHAR(255), value VARCHAR(255), seq INTEGER)",
"CREATE INDEX options_param_idx ON provisioning_options (param_id)",
"CREATE UNIQUE INDEX options_param_label_idx ON provisioning_options (param_id, label)",
@@ -767,6 +767,8 @@ provisioning_options = {
}
-- List of getfile requests
-provisioning_requests = {
+mymodule.provisioning_requests = {
"CREATE TABLE provisioning_requests (mac VARCHAR(12) unique, ip VARCHAR(15), agent VARCHAR(255), date timestamp)",
}
+
+return mymodule