diff options
author | Ted Trask <ttrask01@yahoo.com> | 2011-01-18 14:58:05 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2011-01-18 14:58:05 +0000 |
commit | 2b7534aaf5031a095331b7112420d16b77c586c9 (patch) | |
tree | 9eec9badc42218725a353442872fb9311418b54e | |
parent | 0997e6799c08cc0f4522451210de930a88a792da (diff) | |
download | acf-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.lua | 38 |
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) |