summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2013-10-09 18:59:00 +0000
committerTed Trask <ttrask01@yahoo.com>2013-10-09 18:59:00 +0000
commita8345974307b38d58dbfa352c7be93776e70ffa8 (patch)
treeaab527b5632786e7c297d5032da7ed33dca1026b
parent7431e462e1e92fb757d16d373ed91a5fe1b0659b (diff)
downloadacf-provisioning-a8345974307b38d58dbfa352c7be93776e70ffa8.tar.bz2
acf-provisioning-a8345974307b38d58dbfa352c7be93776e70ffa8.tar.xz
Notify devices when default may have changed in param or param_group
-rw-r--r--provisioning-model.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 6e91b6f..f32d34c 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -901,6 +901,7 @@ update_group = function(self, group, action, create)
if success then
local res, err = pcall(function()
local connected = databaseconnect()
+ local devices = {}
if not create then
local sql = "SELECT * FROM provisioning_groups WHERE group_id='"..provdb.escape(group.value.group_id.value).."'"
local tmp = getselectresponse(sql)
@@ -908,6 +909,16 @@ update_group = function(self, group, action, create)
success = false
errtxt = "Group does not exist"
end
+
+ -- Find all devices that have this group so we can notify on a param default value change
+ sql = "SELECT d2t.device_id "..
+ "FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id)) "..
+ "WHERE t2g.group_id='"..provdb.escape(group.value.group_id.value).."'"
+ devices = getselectresponse(sql)
+ -- Make sure the current params are saved for each device
+ for i,d in ipairs(devices) do
+ if not saved_device_params[d.device_id] then get_device_params(self, d.device_id) end
+ end
end
if success then
local sql = "BEGIN TRANSACTION"
@@ -947,6 +958,13 @@ update_group = function(self, group, action, create)
sql = "COMMIT"
runsqlcommand(sql)
+
+ -- Notify the devices that their params might have changed
+ for i,d in ipairs(devices) do
+ local tmp = saved_device_params[d.device_id]
+ local p = get_device_params(self, d.device_id)
+ callscript(self, updatedeviceparamsscriptfile, p, tmp)
+ end
end
if connected then provdb.databasedisconnect() end
end)
@@ -1090,6 +1108,7 @@ update_param = function(self, param, action, create)
if success then
local res, err = pcall(function()
local connected = databaseconnect()
+ local devices = {}
if not create then
local sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param.value.param_id.value).."'"
local tmp = getselectresponse(sql)
@@ -1097,6 +1116,16 @@ update_param = function(self, param, action, create)
success = false
errtxt = "Param does not exist"
end
+
+ -- Find all devices that have this param so we can notify on a param default value change
+ sql = "SELECT d2t.device_id FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id) "..
+ "JOIN provisioning_groups g USING(group_id) JOIN param_groups_to_params g2p USING(group_id))"..
+ "WHERE g2p.param_id='"..provdb.escape(param.value.param_id.value).."'"
+ devices = getselectresponse(sql)
+ -- Make sure the current params are saved for each device
+ for i,d in ipairs(devices) do
+ if not saved_device_params[d.device_id] then get_device_params(self, d.device_id) end
+ end
end
if success then
local sql = "BEGIN TRANSACTION"
@@ -1118,6 +1147,13 @@ update_param = function(self, param, action, create)
sql = "COMMIT"
runsqlcommand(sql)
+
+ -- Notify the devices that their params might have changed
+ for i,d in ipairs(devices) do
+ local tmp = saved_device_params[d.device_id]
+ local p = get_device_params(self, d.device_id)
+ callscript(self, updatedeviceparamsscriptfile, p, tmp)
+ end
end
if connected then provdb.databasedisconnect() end
end)