diff options
author | Ted Trask <ttrask01@yahoo.com> | 2017-02-22 21:23:32 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2017-02-22 21:23:32 +0000 |
commit | a1da445f34e1c4139e49591a661902f63eef75a4 (patch) | |
tree | a50dbd8c5039626ca2a2e04d335453e4c694b5cb /provisioning-model.lua | |
parent | 07027036bc14ebbb75e54f81b3134ec2b9dc0783 (diff) | |
download | acf-provisioning-a1da445f34e1c4139e49591a661902f63eef75a4.tar.bz2 acf-provisioning-a1da445f34e1c4139e49591a661902f63eef75a4.tar.xz |
Revert "Add notifydevices param and add it to all actions that modify devices (not yet implemented)"
This reverts commit 07027036bc14ebbb75e54f81b3134ec2b9dc0783.
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r-- | provisioning-model.lua | 487 |
1 files changed, 184 insertions, 303 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua index 6d3dc59..5787daa 100644 --- a/provisioning-model.lua +++ b/provisioning-model.lua @@ -321,33 +321,11 @@ local checkgroupdefaultoverride = function(device_id) return (#tmp ~= 0) end -local add_notify_devices = function(p) - local connected - if not p.errtxt then - local res, err = pcall(function() - connected = databaseconnect(true) - - local sql = "SELECT * FROM provisioning_params WHERE name='notifydevices'" - local tmp = getselectresponse(sql) - if tmp and #tmp ~= 0 then - p.value.notifydevices = tmp[1] - end - - if connected then databasedisconnect() end - end) - if not res and err then - handlesqlexception(connected, err) - p.errtxt = err - end - end - return p -end - -- This function is used by scripts, do not change prototype local get_device = function(device_id, create) local connected local retval = {} - if not create then retval.device_id = cfe({value=device_id or "", label="Device ID", readonly=true, seq=0}) end + retval.device_id = cfe({value=device_id or "", label="Device ID", seq=1}) retval.classes = cfe({type="group", value={}, label="Classes", seq=2}) local errtxt local res, err = pcall(function() @@ -617,54 +595,45 @@ mymodule.list_templates = function() return cfe({ type="structure", value=retval, label="Templates", errtxt=errtxt }) end -mymodule.get_new_template = function(self, clientdata) - local retval = cfe({ type="group", value={}, label="Provisioning Template" }) - retval.value.filename = cfe({label="File Name", descr="Must be in "..baseurl, seq=1}) - retval.value.label = cfe({label="Label", seq=2}) - retval.value.seq = cfe({label="Sequence", seq=3}) - self.handle_clientdata(retval, clientdata) - return retval -end - mymodule.get_template = function(self, clientdata) local connected - local retval = mymodule.get_new_template(self, clientdata) - - local filename = retval.value.filename.value - if filename~="" and not string.match(filename, "/") then + clientdata = clientdata or {} + local filename = clientdata.filename + local retval = {} + if filename and not string.match(filename, "/") then filename = baseurl .. filename - retval.value.filename.value = filename end - if filename ~= "" then + retval.filename = cfe({value=filename or "", label="File Name", descr="Must be in "..baseurl, seq=1}) + retval.label = cfe({label="Label", seq=2}) + retval.seq = cfe({label="Sequence", seq=3}) + local errtxt + if filename and filename ~= "" then local res, err = pcall(function() connected = databaseconnect(true) 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) if tmp and #tmp > 0 then for n,v in pairs(tmp[1]) do - if retval.value[n] then - retval.value[n].value = v + if n == "value" then + retval.filename.value = v + elseif retval[n] then + retval[n].value = v end end - else - retval.errtxt = "Template does not exist" end if connected then databasedisconnect() end - - local filedetails = modelfunctions.getfiledetails(retval.value.filename.value, function(filename) return validator.is_valid_filename(filename, baseurl) end) - for i,n in ipairs({"filecontent", "size", "mtime"}) do - retval.value[n] = filedetails.value[n] - end end) if not res and err then handlesqlexception(connected, err) - retval.errtxt = err + errtxt = err end - else - retval.errtxt = "Template does not exist" + end + local filedetails = modelfunctions.getfiledetails(retval.filename.value, function(filename) return validator.is_valid_filename(filename, baseurl) end) + for i,n in ipairs({"filecontent", "size", "mtime"}) do + retval[n] = filedetails.value[n] end - return add_notify_devices(retval) + return cfe({ type="group", value=retval, label="Provisioning Template", errtxt=errtxt }) end mymodule.create_template = function(self, template, action) @@ -713,9 +682,7 @@ mymodule.update_template = function(self, template, action, create) end runsqlcommand(sql) - if template.value.filecontent then - fs.write_file(template.value.filename.value, string.gsub(format.dostounix(template.value.filecontent.value), "\n+$", "")) - end + fs.write_file(template.value.filename.value, string.gsub(format.dostounix(template.value.filecontent.value), "\n+$", "")) end if connected then databasedisconnect() end end) @@ -799,48 +766,39 @@ mymodule.list_class_groups = function() return cfe({ type="structure", value=retval, label="Class Groups", errtxt=errtxt }) end -mymodule.get_new_class_group = function(self, clientdata) - local retval = cfe({ type="group", value={}, label="Provisioning Class Group" }) - retval.value.name = cfe({label="Name", seq=2}) - retval.value.label = cfe({label="Label", seq=3}) - retval.value.seq = cfe({label="Sequence", seq=4}) - self.handle_clientdata(retval, clientdata) - return retval -end - mymodule.get_class_group = function(self, clientdata) local connected - local retval = mymodule.get_new_class_group(self, clientdata) - retval.value.class_group_id = cfe({label="Class Group ID", seq=0}) - self.handle_clientdata(retval, clientdata) - retval.value.class_group_id.readonly=true - - local class_group_id = retval.value.class_group_id.value - if class_group_id ~= "" then - local res, err = pcall(function() - connected = databaseconnect(true) + clientdata = clientdata or {} + local class_group_id = clientdata.class_group_id + local retval = {} + retval.class_group_id = cfe({value=class_group_id or "", label="Class Group ID", readonly=true, seq=1}) + retval.name = cfe({label="Name", seq=2}) + retval.label = cfe({label="Label", seq=3}) + retval.seq = cfe({label="Sequence", seq=4}) + local errtxt + local res, err = pcall(function() + connected = databaseconnect(true) + 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) if tmp and #tmp > 0 then for n,v in pairs(tmp[1]) do - if retval.value[n] then - retval.value[n].value = v + if retval[n] then + retval[n].value = v end end - else - retval.errtxt = "Class Group does not exist" end - if connected then databasedisconnect() end - end) - if not res and err then - handlesqlexception(connected, err) - retval.errtxt = err + else + retval.class_group_id = nil end - else - retval.errtxt = "Class Group does not exist" + if connected then databasedisconnect() end + end) + if not res and err then + handlesqlexception(connected, err) + errtxt = err end - return add_notify_devices(retval) + return cfe({ type="group", value=retval, label="Provisioning Class Group", errtxt=errtxt }) end mymodule.create_class_group = function(self, group, action) @@ -967,94 +925,66 @@ mymodule.list_classes = function() return cfe({ type="structure", value=retval, label="Classes", errtxt=errtxt }) end -mymodule.get_new_class = function(self, clientdata) +mymodule.get_class = function(self, clientdata) local connected - local retval = cfe({ type="group", value={}, label="Provisioning Class" }) - retval.value.class_group_id = cfe({type="select", label="Class Group", option={}, seq=2}) - retval.value.label = cfe({label="Label", seq=3}) - retval.value.seq = cfe({label="Sequence", seq=4}) - retval.value.groups = cfe({type="group", value={}, label="Parameter Groups", seq=5}) - + clientdata = clientdata or {} + local class_id = clientdata.class_id + local retval = {} + retval.class_id = cfe({value=class_id or "", label="Class ID", readonly=true, seq=1}) + retval.class_group_id = cfe({type="select", label="Class Group", option={}, seq=2}) + retval.label = cfe({label="Label", seq=3}) + retval.seq = cfe({label="Sequence", seq=4}) + retval.groups = cfe({type="group", value={}, label="Parameter Groups", seq=5}) + local errtxt local res, err = pcall(function() + local groups = {} connected = databaseconnect(true) + if class_id and class_id ~= "" then + local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..provdb.escape(class_id).."'" + local tmp = getselectresponse(sql) + if tmp and #tmp > 0 then + for n,v in pairs(tmp[1]) do + if retval[n] then + retval[n].value = v + end + end + 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) + for i,g in ipairs(tmp) do + groups[g.group_id] = true + end + else + retval.class_id = nil + end -- Get the class_group_id options sql = "SELECT * from provisioning_class_groups ORDER BY seq ASC, label ASC" tmp = getselectresponse(sql) for i,g in ipairs(tmp) do - retval.value.class_group_id.option[#retval.value.class_group_id.option + 1] = {value=g.class_group_id, label=g.label} + 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) for i,g in ipairs(tmp) do - if not retval.value.groups.value[g.name] then - retval.value.groups.value[g.name] = cfe({type="select", label=g.name, option={{value="", label=""}}, seq=i}) + if not retval.groups.value[g.name] then + retval.groups.value[g.name] = cfe({type="select", label=g.name, option={{value="", label=""}}, seq=i}) end - local group = retval.value.groups.value[g.name] + local group = retval.groups.value[g.name] group.option[#group.option + 1] = {value=g.group_id, label=g.label} + if groups[g.group_id] then + group.value = g.group_id + end end if connected then databasedisconnect() end end) if not res and err then handlesqlexception(connected, err) - retval.errtxt = err - end - - self.handle_clientdata(retval, clientdata) - return retval -end - -mymodule.get_class = function(self, clientdata) - local connected - local retval = mymodule.get_new_class(self, clientdata) - retval.value.class_id = cfe({label="Class ID", seq=0}) - self.handle_clientdata(retval, clientdata) - retval.value.class_id.readonly=true - - local class_id = retval.value.class_id.value - if class_id ~= "" then - local res, err = pcall(function() - local groups = {} - connected = databaseconnect(true) - local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..provdb.escape(class_id).."'" - local tmp = getselectresponse(sql) - if tmp and #tmp > 0 then - for n,v in pairs(tmp[1]) do - if retval.value[n] then - retval.value[n].value = v - end - 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) - for i,g in ipairs(tmp) do - groups[g.group_id] = true - end - - -- Loop through the groups and options to mark the mappings - for n,g in pairs(retval.value.groups.value) do - for i,o in ipairs(g.option) do - if groups[o.value] then - g.value = o.value - break - end - end - end - else - retval.errtxt = "Class does not exist" - end - if connected then databasedisconnect() end - end) - if not res and err then - handlesqlexception(connected, err) - retval.errtxt = err - end - else - retval.errtxt = "Class does not exist" + errtxt = err end - return add_notify_devices(retval) + return cfe({ type="group", value=retval, label="Provisioning Class", errtxt=errtxt }) end mymodule.create_class = function(self, class, action) @@ -1189,26 +1119,29 @@ mymodule.list_groups = function() return cfe({ type="structure", value=retval, label="Parameter Groups", errtxt=errtxt }) end -mymodule.get_new_group = function(self, clientdata) +mymodule.get_group = function(self, clientdata) local connected - local retval = cfe({ type="group", value={}, label="Provisioning Parameter Group" }) - retval.value.name = cfe({label="Name", seq=2}) - retval.value.label = cfe({label="Label", seq=3}) - retval.value.seq = cfe({label="Sequence", seq=4}) - retval.value.params = cfe({type="multi", value={}, label="Parameters", option={}, descr="Each selected parameter will be included in the group", seq=5}) - retval.value.editable = cfe({type="multi", value={}, label="Editable Parameters", option={}, descr="Each selected parameter will be user editable", seq=6}) - retval.value.override = cfe({type="multi", value={}, label="Overridden Parameters", option={}, descr="Each selected parameter will override the parameter default from the group defaults", seq=7}) - retval.value.defaults = cfe({type="group", value={}, label="Parameter Defaults", seq=8}) - + clientdata = clientdata or {} + local group_id = clientdata.group_id + local retval = {} + retval.group_id = cfe({value=group_id or "", label="Group ID", readonly=true, seq=1}) + retval.name = cfe({label="Name", seq=2}) + retval.label = cfe({label="Label", seq=3}) + retval.seq = cfe({label="Sequence", seq=4}) + retval.params = cfe({type="multi", value={}, label="Parameters", option={}, descr="Each selected parameter will be included in the group", seq=5}) + retval.editable = cfe({type="multi", value={}, label="Editable Parameters", option={}, descr="Each selected parameter will be user editable", seq=6}) + retval.override = cfe({type="multi", value={}, label="Overridden Parameters", option={}, descr="Each selected parameter will override the parameter default from the group defaults", seq=7}) + retval.defaults = cfe({type="group", value={}, label="Parameter Defaults", seq=8}) + local errtxt local res, err = pcall(function() connected = databaseconnect(true) - -- Get all the parameters to set up the params.options and defaults + -- 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) for i,p in ipairs(tmp) do - retval.value.params.option[#retval.value.params.option + 1] = {value=p.param_id, label=p.label} - retval.value.editable.option[#retval.value.editable.option + 1] = {value=p.param_id, label=p.label} - retval.value.override.option[#retval.value.override.option + 1] = {value=p.param_id, label=p.label} + 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} + retval.override.option[#retval.override.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" @@ -1218,70 +1151,46 @@ mymodule.get_new_group = function(self, clientdata) p.value = (p.value == "true") end p.default = p.value - retval.value.defaults.value[p.param_id] = p + retval.defaults.value[p.param_id] = p end - if connected then databasedisconnect() end - end) - if not res and err then - handlesqlexception(connected, err) - retval.errtxt = err - end - - self.handle_clientdata(retval, clientdata) - return retval -end - -mymodule.get_group = function(self, clientdata) - local connected - local retval = mymodule.get_new_group(self, clientdata) - retval.value.group_id = cfe({value=group_id or "", label="Group ID", seq=0}) - self.handle_clientdata(retval, clientdata) - retval.value.group_id.readonly=true - - local group_id = retval.value.group_id.value - if group_id ~= "" then - local res, err = pcall(function() - connected = databaseconnect(true) + if group_id and group_id ~= "" then sql = "SELECT * FROM provisioning_groups WHERE group_id='"..provdb.escape(group_id).."'" tmp = getselectresponse(sql) if tmp and #tmp > 0 then for n,v in pairs(tmp[1]) do - if retval.value[n] then - retval.value[n].value = v + if retval[n] then + retval[n].value = v end 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) - for i,p in ipairs(tmp) do - retval.value.params.value[#retval.value.params.value + 1] = p.param_id - if (p.editable == "t") then - retval.value.editable.value[#retval.value.editable.value + 1] = p.param_id - end - if p.value then - retval.value.override.value[#retval.value.override.value + 1] = p.param_id - if retval.value.defaults.value[p.param_id].type == "boolean" then - retval.value.defaults.value[p.param_id].value = (p.value == "true") - else - retval.value.defaults.value[p.param_id].value = p.value - end + 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) + for i,p in ipairs(tmp) do + retval.params.value[#retval.params.value + 1] = p.param_id + if (p.editable == "t") then + retval.editable.value[#retval.editable.value + 1] = p.param_id + end + if p.value then + retval.override.value[#retval.override.value + 1] = p.param_id + if retval.defaults.value[p.param_id].type == "boolean" then + retval.defaults.value[p.param_id].value = (p.value == "true") + else + retval.defaults.value[p.param_id].value = p.value end end - else - retval.errtxt = "Group does not exist" end - if connected then databasedisconnect() end - end) - if not res and err then - handlesqlexception(connected, err) - retval.errtxt = err + else + retval.group_id = nil end - else - retval.errtxt = "Group does not exist" + if connected then databasedisconnect() end + end) + if not res and err then + handlesqlexception(connected, err) + errtxt = err end - return add_notify_devices(retval) + return cfe({ type="group", value=retval, label="Provisioning Parameter Group", errtxt=errtxt }) end mymodule.create_group = function(self, group, action) @@ -1458,54 +1367,44 @@ mymodule.list_params = function() return cfe({ type="structure", value=retval, label="Parameters", errtxt=errtxt }) end -mymodule.get_new_param = function(self, clientdata) - local retval = cfe({ type="group", value={}, label="Provisioning Parameter" }) - retval.value.name = cfe({label="Name", seq=2}) - retval.value.type = cfe({type="select", label="Type", option={"text", "boolean", "select"}, seq=3}) - retval.value.label = cfe({label="Label", seq=4}) - retval.value.descr = cfe({label="Description", seq=5}) - retval.value.value = cfe({label="Default Value", descr="Warning, this value is not validated", seq=6}) - retval.value.regexp = cfe({label="Regular Expression", descr="Lua regular expression for validating the text parameter value", seq=7}) - retval.value.validate = cfe({type="longtext", label="Validation Code", descr="Lua code to validate the parameter value. Returns updated value and error text. Not used to validate group defaults.", seq=8}) - retval.value.seq = cfe({label="Sequence", seq=9}) - - self.handle_clientdata(retval, clientdata) - return retval -end - mymodule.get_param = function(self, clientdata) local connected - local retval = mymodule.get_new_param(self, clientdata) - retval.value.param_id = cfe({value=param_id or "", label="Param ID", seq=0}) - self.handle_clientdata(retval, clientdata) - retval.value.param_id.readonly=true - - local param_id = retval.value.param_id.value - if param_id ~= "" then - local res, err = pcall(function() - connected = databaseconnect(true) + clientdata = clientdata or {} + local param_id = clientdata.param_id + local retval = {} + retval.param_id = cfe({value=param_id or "", label="Param ID", readonly=true, seq=1}) + retval.name = cfe({label="Name", seq=2}) + retval.type = cfe({type="select", label="Type", option={"text", "boolean", "select"}, seq=3}) + retval.label = cfe({label="Label", seq=4}) + retval.descr = cfe({label="Description", seq=5}) + retval.value = cfe({label="Default Value", descr="Warning, this value is not validated", seq=6}) + retval.regexp = cfe({label="Regular Expression", descr="Lua regular expression for validating the text parameter value", seq=7}) + retval.validate = cfe({type="longtext", label="Validation Code", descr="Lua code to validate the parameter value. Returns updated value and error text. Not used to validate group defaults.", seq=8}) + retval.seq = cfe({label="Sequence", seq=9}) + local errtxt + local res, err = pcall(function() + connected = databaseconnect(true) + if param_id and param_id ~= "" then sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param_id).."'" tmp = getselectresponse(sql) if tmp and #tmp > 0 then for n,v in pairs(tmp[1]) do - if retval.value[n] then - retval.value[n].value = v + if retval[n] then + retval[n].value = v end end - else - retval.errtxt = "Parameter does not exist" end - if connected then databasedisconnect() end - end) - if not res and err then - handlesqlexception(connected, err) - retval.errtxt = err + else + retval.param_id = nil end - else - retval.errtxt = "Parameter does not exist" + if connected then databasedisconnect() end + end) + if not res and err then + handlesqlexception(connected, err) + errtxt = err end - return add_notify_devices(retval) + return cfe({ type="group", value=retval, label="Provisioning Parameter", errtxt=errtxt }) end mymodule.create_param = function(self, param, action) @@ -1741,17 +1640,13 @@ mymodule.list_devices = function(self, clientdata) end mymodule.get_existing_device = function(self, clientdata) - local tmp = cfe({ type="group", value={device_id = cfe()} }) - self.handle_clientdata(tmp, clientdata) - retval = get_device(tmp.value.device_id.value, false) - self.handle_clientdata(retval, clientdata) - return add_notify_devices(retval) + clientdata = clientdata or {} + return get_device(clientdata.device_id, false) end mymodule.get_new_device = function(self, clientdata) - retval = get_device(nil, true) - self.handle_clientdata(retval, clientdata) - return retval + clientdata = clientdata or {} + return get_device(clientdata.device_id, true) end mymodule.create_device = function(self, device, action) @@ -1783,29 +1678,25 @@ mymodule.update_device = function(self, device, action, create) end end if success then - local device_id + if not saved_devices[device.value.device_id.value] then get_device(device.value.device_id.value) end + if not saved_device_params[device.value.device_id.value] then get_device_params(device.value.device_id.value) end + if create then sql = "SELECT nextval('provisioning_device_seq')" local tmp = getselectresponse(sql) if tmp and #tmp>0 then - device_id = tmp[1].nextval - -- Add to cfe so can use to redirect to editdeviceparams - device.value.device_id = cfe({value=device_id or "", label="Device ID", readonly=true, seq=0}) + device.value.device_id.value = tmp[1].nextval end - logcall("create_device "..device_id) + logcall("create_device "..device.value.device_id.value) else - device_id = device.value.device_id.value - if not saved_devices[device_id] then get_device(device_id) end - if not saved_device_params[device_id] then get_device_params(device_id) end - - logcall("update_device "..device_id) + logcall("update_device "..device.value.device_id.value) end - sql = "DELETE FROM devices_to_classes WHERE device_id='"..provdb.escape(device_id).."'" + sql = "DELETE FROM devices_to_classes WHERE device_id='"..provdb.escape(device.value.device_id.value).."'" runsqlcommand(sql) -- 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_id).."', '"..provdb.escape(c.value).."')" + sql = "INSERT INTO devices_to_classes VALUES('"..provdb.escape(device.value.device_id.value).."', '"..provdb.escape(c.value).."')" runsqlcommand(sql) end end @@ -1813,8 +1704,8 @@ mymodule.update_device = function(self, device, action, create) device.descr = "Device Created" -- Notify the device that its params might have changed (this will also validate) - local s = saved_device_params[device_id] - local r = set_device_params(get_device_params(device_id, false), false) + local s = saved_device_params[device.value.device_id.value] + local r = set_device_params(get_device_params(device.value.device_id.value, false), false) if r.errtxt then if create then device.descr = device.descr.."\nERROR: Failed to update params\n"..r:print_errtxt() @@ -1823,9 +1714,9 @@ mymodule.update_device = function(self, device, action, create) end end - callscript(updatedevicescriptfile, device, saved_devices[device_id], r, s) + callscript(updatedevicescriptfile, device, saved_devices[device.value.device_id.value], r, s) - saved_devices[device_id] = device + saved_devices[device.value.device_id.value] = device end if connected then databasedisconnect() end end) @@ -1889,26 +1780,21 @@ mymodule.delete_device = function(self, delreq) end mymodule.get_editable_device_params = function(self, clientdata, action) - local tmp = cfe({ type="group", value={device_id = cfe()} }) - self.handle_clientdata(tmp, clientdata) - retval = get_device_params(tmp.value.device_id.value, true) - self.handle_clientdata(retval, clientdata) - return add_notify_devices(retval) + clientdata = clientdata or {} + return get_device_params(clientdata.device_id, true) end mymodule.get_all_device_params = function(self, clientdata, action) - local tmp = cfe({ type="group", value={device_id = cfe()} }) - self.handle_clientdata(tmp, clientdata) - retval = get_device_params(tmp.value.device_id.value, false) - self.handle_clientdata(retval, clientdata) - return add_notify_devices(retval) + clientdata = clientdata or {} + return get_device_params(clientdata.device_id, false) end mymodule.get_class_options = function(self, clientdata) - local retval = cfe({ type="group", value={}, label="Provisioning Class Values" }) - retval.value.class_id = cfe({label="Class ID", seq=1}) - self.handle_clientdata(retval, clientdata) - return retval + clientdata = clientdata or {} + local class_id = clientdata.class_id + local retval = {} + retval.class_id = cfe({value=class_id or "", label="Class ID", seq=1}) + return cfe({ type="group", value=retval, label="Provisioning Class Values" }) end mymodule.get_class_values = function(self, retval) @@ -2476,10 +2362,11 @@ mymodule.delete_request = function(self, delreq) end mymodule.get_request = function(self, clientdata) - local retval = cfe({ type="group", value={}, label="Create Device from Request" }) - retval.value.mac = cfe({ label="MAC Address" }) - self.handle_clientdata(retval, clientdata) - return add_notify_devices(retval) + clientdata = clientdata or {} + local mac = clientdata.mac + local retval = {} + retval.mac = cfe({ value=mac or "", label="MAC Address" }) + return cfe({ type="group", value=retval, label="Create Device from Request" }) end mymodule.create_from_request = function(self, request) @@ -2538,20 +2425,14 @@ mymodule.create_from_request = function(self, request) end mymodule.get_bulk_create_request = function(self, clientdata) - local retval = cfe({ type="group", value={}, label="Create Multiple Devices" }) - retval.value.bulkdevicedata = cfe({ type="list", value={}, label="Bulk device list", descr="List of devices as comma-separated fields (first row must contain column headers)" }) - return add_notify_devices(retval) + local retval = {} + retval.bulkdevicedata = cfe({ type="list", value={}, label="Bulk device list", descr="List of devices as comma-separated fields (first row must contain column headers)" }) + return cfe({ type="group", value=retval, label="Create Multiple Devices" }) end mymodule.bulk_create_devices = function(self, devicelist) logcall("bulk_create_devices") local connected - - if #devicelist.value.bulkdevicedata.value == 0 then - devicelist.errtxt = "No devices specified" - return devicelist - end - -- To allow uploading a file, check the bulkdevicedata format -- Haserl will pass a temporary file name if a file is uploaded if #devicelist.value.bulkdevicedata.value == 1 and string.find(devicelist.value.bulkdevicedata.value[1], "^/tmp/[^.]+$") and fs.is_file(devicelist.value.bulkdevicedata.value[1]) then |