summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua143
1 files changed, 93 insertions, 50 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index de2f748..2c41810 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -461,30 +461,36 @@ update_template = function(self, template, action, create)
return template
end
-delete_template = function(filename)
- local result = ""
- local errtxt
+get_delete_template = function(self, clientdata)
+ 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)
+ 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='"..escape(filename).."'"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Template does not exist"
+ 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='"..escape(filename).."'"
runsqlcommand(sql)
-- Delete the template file
os.remove(filename)
- result = "Template Deleted"
+ delreq.errtxt = nil
end
if connected then databasedisconnect() end
end)
if not res and err then
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Template Result" })
+ return delreq
end
list_class_groups = function()
@@ -605,27 +611,33 @@ update_class_group = function(self, group, action, create)
return group
end
-delete_class_group = function(class_group_id)
- local result = ""
- local errtxt
+get_delete_class_group = function(self, clientdata)
+ 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)
+ 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='"..escape(class_group_id).."'"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Group does not exist"
+ delreq.value.class_group_id.errtxt = "Group does not exist"
else
sql = "DELETE FROM provisioning_class_groups WHERE class_group_id='"..escape(class_group_id).."'"
runsqlcommand(sql)
- result = "Class Group Deleted"
+ delreq.errtxt = nil
end
if connected then databasedisconnect() end
end)
if not res and err then
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Class Group Result" })
+ return delreq
end
list_classes = function()
@@ -779,15 +791,21 @@ update_class = function(self, class, action, create)
return class
end
-delete_class = function(class_id)
- local result = ""
- local errtxt
+get_delete_class = function(self, clientdata)
+ 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)
+ 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='"..escape(class_id).."'"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Class does not exist"
+ delreq.value.class_id.errtxt = "Class does not exist"
else
sql = "BEGIN TRANSACTION"
runsqlcommand(sql)
@@ -795,18 +813,18 @@ delete_class = function(class_id)
runsqlcommand(sql, true)
sql = "DELETE FROM provisioning_classes WHERE class_id='"..escape(class_id).."'"
runsqlcommand(sql, true)
- result = "Class Deleted"
sql = "COMMIT"
runsqlcommand(sql)
+ delreq.errtxt = nil
end
if connected then databasedisconnect() end
end)
if not res and err then
pcall(function() con:execute("ROLLBACK") end)
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Class Result" })
+ return delreq
end
list_groups = function()
@@ -991,15 +1009,21 @@ update_group = function(self, group, action, create)
return group
end
-delete_group = function(group_id)
- local result = ""
- local errtxt
+get_delete_group = function(self, clientdata)
+ 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)
+ 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='"..escape(group_id).."'"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Group does not exist"
+ delreq.value.group_id.errtxt = "Group does not exist"
else
sql = "BEGIN TRANSACTION"
runsqlcommand(sql)
@@ -1007,18 +1031,18 @@ delete_group = function(group_id)
runsqlcommand(sql, true)
sql = "DELETE FROM provisioning_groups WHERE group_id='"..escape(group_id).."'"
runsqlcommand(sql, true)
- result = "Parameter Group Deleted"
sql = "COMMIT"
runsqlcommand(sql)
+ delreq.errtxt = nil
end
if connected then databasedisconnect() end
end)
if not res and err then
pcall(function() con:execute("ROLLBACK") end)
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Parameter Group Result" })
+ return delreq
end
list_params = function()
@@ -1150,15 +1174,21 @@ update_param = function(self, param, action, create)
return param
end
-delete_param = function(param_id)
- local result = ""
- local errtxt
+get_delete_param = function(self, clientdata)
+ 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)
+ 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='"..escape(param_id).."'"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Parameter does not exist"
+ delreq.value.param_id.errtxt = "Parameter does not exist"
else
sql = "BEGIN TRANSACTION"
runsqlcommand(sql)
@@ -1166,18 +1196,18 @@ delete_param = function(param_id)
runsqlcommand(sql, true)
sql = "DELETE FROM provisioning_params WHERE param_id='"..escape(param_id).."'"
runsqlcommand(sql, true)
- result = "Parameter Deleted"
sql = "COMMIT"
runsqlcommand(sql)
+ delreq.errtxt = nil
end
if connected then databasedisconnect() end
end)
if not res and err then
pcall(function() con:execute("ROLLBACK") end)
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Parameter Result" })
+ return delreq
end
list_devices = function()
@@ -1322,15 +1352,21 @@ update_device = function(self, device, action, create)
return device
end
-delete_device = function(device_id)
- local result = ""
- local errtxt
+get_delete_device = function(self, clientdata)
+ 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)
+ 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='"..escape(device_id).."' LIMIT 1"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Device does not exist"
+ delreq.value.device_id.errtxt = "Device does not exist"
else
if not saved_device_params[device_id] then get_device_params(device_id) end
if not saved_devices[device_id] then get_device(device_id) end
@@ -1341,9 +1377,9 @@ delete_device = function(device_id)
runsqlcommand(sql, true)
sql = "DELETE FROM devices_to_classes WHERE device_id='"..escape(device_id).."'"
runsqlcommand(sql, true)
- result = "Device Deleted"
sql = "COMMIT"
runsqlcommand(sql)
+ delreq.errtxt = nil
callscript(deletedevicescriptfile, saved_devices[device_id], saved_device_params[device_id])
saved_devices[device_id] = nil
@@ -1353,10 +1389,10 @@ delete_device = function(device_id)
end)
if not res and err then
pcall(function() con:execute("ROLLBACK") end)
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Device Result" })
+ return delreq
end
get_editable_device_params = function(self, clientdata, action)
@@ -1996,28 +2032,34 @@ list_requests = function()
return cfe({ type="structure", value=retval, label="List of Requests", errtxt=errtxt })
end
-delete_request = function(mac)
- local result = ""
- local errtxt
+get_delete_request = function(self, clientdata)
+ 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)
+ 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='"..escape(string.upper(mac)).."'"
local tmp = getselectresponse(sql)
if #tmp == 0 then
- errtxt = "Request does not exist"
+ delreq.value.mac.errtxt = "Request does not exist"
else
-- Remove the request
sql = "DELETE FROM provisioning_requests WHERE mac='"..escape(string.upper(mac)).."'"
runsqlcommand(sql)
- result = "Request Deleted"
+ delreq.errtxt = nil
end
if connected then databasedisconnect() end
end)
if not res and err then
- errtxt = err
+ delreq.errtxt = err
end
- return cfe({ value=result, errtxt=errtxt, label="Delete Request Result" })
+ return delreq
end
get_request = function(self, clientdata)
@@ -2057,7 +2099,8 @@ create_from_request = function(self, request)
end
if params.errtxt then
request.errtxt = params.errtxt
- delete_device(device.value.device_id.value)
+ local req = get_delete_device(self, {device_id = device.value.device_id.value})
+ delete_device(self, req)
else
success = true
request.value.device_id = device.value.device_id