summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2011-01-18 14:58:05 +0000
committerTed Trask <ttrask01@yahoo.com>2011-01-18 14:58:05 +0000
commit2b7534aaf5031a095331b7112420d16b77c586c9 (patch)
tree9eec9badc42218725a353442872fb9311418b54e
parent0997e6799c08cc0f4522451210de930a88a792da (diff)
downloadacf-provisioning-2b7534aaf5031a095331b7112420d16b77c586c9.tar.bz2
acf-provisioning-2b7534aaf5031a095331b7112420d16b77c586c9.tar.xz
Added delete_device script and made sure to pass full params structures to scripts.
-rw-r--r--provisioning-model.lua38
1 files changed, 30 insertions, 8 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 3618194..be12903 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -18,6 +18,7 @@ local path = "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
local baseurl = "/etc/provisioning/templates/"
local updatedevicescriptfile = "/etc/provisioning/update_device.lua"
local updatedeviceparamsscriptfile = "/etc/provisioning/update_device_params.lua"
+local deletedevicescriptfile = "/etc/provisioning/delete_device.lua"
local env
local con
@@ -313,7 +314,7 @@ validateparam = function(p)
return true
end
-local function callscript(script, value, oldvalue)
+local function callscript(script, ...)
local functions = {
getselectresponse=getselectresponse,
runsqlcommand=runsqlcommand,
@@ -326,7 +327,7 @@ local function callscript(script, value, oldvalue)
-- so we set env 0, not env 1
setfenv (0, env)
local f = loadfile(script)
- if (f) then f(functions, value, oldvalue) end
+ if (f) then f(functions, ...) end
setfenv (0, _G)
end
@@ -1148,6 +1149,9 @@ update_device = function(device, create)
end
end
if success then
+ 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
+
local sql = "BEGIN TRANSACTION"
runsqlcommand(sql)
if create then
@@ -1175,7 +1179,9 @@ update_device = function(device, create)
sql = "COMMIT"
runsqlcommand(sql)
- callscript(updatedevicescriptfile, device, saved_devices[device.value.device_id.value])
+ local s = saved_device_params[device.value.device_id.value]
+ callscript(updatedevicescriptfile, device, saved_devices[device.value.device_id.value], get_device_params(device.value.device_id.value), s)
+ saved_devices[device.value.device_id.value] = device
end
if connected then databasedisconnect() end
end)
@@ -1205,6 +1211,9 @@ delete_device = function(device_id)
if #tmp == 0 then
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
+
sql = "BEGIN TRANSACTION"
runsqlcommand(sql)
sql = "DELETE FROM provisioning_values WHERE device_id='"..escape(device_id).."'"
@@ -1216,6 +1225,10 @@ delete_device = function(device_id)
result = "Device Deleted"
sql = "COMMIT"
runsqlcommand(sql)
+
+ callscript(deletedevicescriptfile, saved_devices[device_id], saved_device_params[device_id])
+ saved_devices[device_id] = nil
+ saved_device_params[device_id] = nil
end
if connected then databasedisconnect() end
end)
@@ -1298,7 +1311,7 @@ get_device_params = function(device_id, editable)
-- Save the device for later use
local output = cfe({ type="group", value=retval, label="Provisioning Device Parameters", errtxt=errtxt })
- if device_id and device_id ~= "" then saved_device_params[device_id] = duplicatestructure(output) end
+ if device_id and device_id ~= "" and not editable then saved_device_params[device_id] = duplicatestructure(output) end
return output
end
@@ -1322,6 +1335,8 @@ set_device_params = function(params, editable)
end
end
if success then
+ if not saved_device_params[params.value.device_id.value] then get_device_params(params.value.device_id.value) end
+
local sql = "BEGIN TRANSACTION"
runsqlcommand(sql)
if not editable then
@@ -1348,7 +1363,14 @@ set_device_params = function(params, editable)
sql = "COMMIT"
runsqlcommand(sql)
- callscript(updatedeviceparamsscriptfile, params, saved_device_params[params.value.device_id.value])
+ 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(params.value.device_id.value)
+ end
+ callscript(updatedeviceparamsscriptfile, p, tmp)
end
if connected then databasedisconnect() end
end)
@@ -1582,16 +1604,16 @@ set_param_options = function(options)
end
function get_filedetails(filename)
- return modelfunctions.getfiledetails(filename, {updatedevicescriptfile, updatedeviceparamsscriptfile})
+ return modelfunctions.getfiledetails(filename, {updatedevicescriptfile, updatedeviceparamsscriptfile, deletedevicescriptfile})
end
function update_filedetails(filedetails)
- return modelfunctions.setfiledetails(filedetails, {updatedevicescriptfile, updatedeviceparamsscriptfile}, validatefiledetails)
+ return modelfunctions.setfiledetails(filedetails, {updatedevicescriptfile, updatedeviceparamsscriptfile, deletedevicescriptfile}, validatefiledetails)
end
function list_files()
local retval = {}
- for i,file in ipairs({updatedevicescriptfile, updatedeviceparamsscriptfile}) do
+ for i,file in ipairs({updatedevicescriptfile, updatedeviceparamsscriptfile, deletedevicescriptfile}) do
local details = fs.stat(file) or {}
details.filename = file
table.insert(retval, details)