From 24e737f23a7ef3a5f5871d75a23470d6ee27462e Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Sun, 20 Oct 2013 23:28:40 +0000 Subject: 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. --- provisioning-controller.lua | 84 ++++---- provisioning-model.lua | 463 ++++++++++++++++++++++---------------------- provisioning-scripts.lua | 26 +-- 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 -- cgit v1.2.3