summaryrefslogtreecommitdiffstats
path: root/config/delete_device.lua
blob: 81c2afb1ac381f43ba9df4c7018086c583b86a3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
-- This is the script run after deleting a device (and all of its params)
local self, olddevice, oldparams = ...

require("posix")

local root = "/var/www/provisioning/htdocs/"

--self.logevent("got to delete_device script")

-- First, we delete the associated config files for Polycom with valid MAC (not blank or all 0's)
if oldparams.value.device and string.match(oldparams.value.device.label, "Polycom") and oldparams.value.device.value.mac and string.match(oldparams.value.device.value.mac.value, "[1-9A-F]") then
	--self.logevent("Deleting files for "..oldparams.value.device.value.mac.value)
	local path = root.."Polycom/"
	if posix.stat(path, "type") == "directory" then
		for d in posix.files(path) do
			if string.match(d, string.lower(oldparams.value.device.value.mac.value)) and posix.stat(path..d, "type") == "regular" then
				--self.logevent("deleting "..path..d)
				os.remove(path..d)
			end
		end
	end
end

-- We'll handle the deleting of the device by handling the resulting changing of the params
-- First, have to create a new set of params (with blank extensions)
local duplicatestructure
duplicatestructure = function(value, saved)
        saved = saved or {}
	if type(value) == "table" then
		if saved[value] then
			return saved[value]
		else
			local output = {}
			saved[value] = output
			for k,v in pairs(value) do
				output[k] = duplicatestructure(v, saved)
			end
			return output
		end
	else
		return value
	end
end

local params = duplicatestructure(oldparams)
for name,val in pairs(params.value) do
        if string.match(name, "^reg") then
		params.value[name].value.extension.value = ""
	end
end

-- Then call the other script
local env = {}
setmetatable (env, {__index = _G})
-- loadfile loads into the global environment
-- so we set env 0, not env 1
setfenv (0, env)
local f = loadfile("/etc/provisioning/update_device_params.lua")
if (f) then f(self, params, oldparams) end
setfenv (0, _G)