Newer
Older
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- gpfs-direct
--
-- A (Layer 2) configuration.
--
-- Author: Jan Meyer <jan.meyer@desy.de>
--
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
-- configuration parameters
--
settings {
statusFile = "/space/projects/live-viewer/lsyncd.stat",
}
local formats = { jpg = true, tif = true, cbf = true, log = true }
local folders = { "/local", "/current/raw", "/commissioning/raw" }
gpfs = {
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
onCreate = function(event)
-- check if in relevant subfolder
local location = false
for i, path in ipairs(folders) do
if string.sub(event.path, 1, string.len(path)) == path then
location = true
break
end
end
if location == false then return end
if event.isdir then
for i, path in ipairs(folders) do
if path == event.pathname then return end
end
spawn(
event,
'/bin/mkdir',
event.targetPath
)
else
-- check filetype
local extension = string.match(event.name, ".*%.([^.]+)$")
if formats[extension] ~= true then return end
spawn (
event,
'/usr/bin/python',
'/space/projects/live-viewer/ZeroMQTunnel/wrapper_script.py',
'--mv_source',
event.sourcePath,
'--mv_target',
event.targetPathdir
)
-- spawn(
-- event,
-- '/bin/mv',
-- event.sourcePath,
-- event.targetPathdir
-- )
onModify = function(event)
if event.isdir then
error("Do not know how to handle 'Modify' on dirs")
else
-- check if in relevant subfolder
local location = false
for i, path in ipairs(folders) do
if string.sub(event.path, 1, string.len(path)) == path then
location = true
break
end
end
if location == false then return end
-- check filetype
local extension = string.match(event.name, ".*%.([^.]+)$")
if formats[extension] ~= true then return end
'/space/projects/live-viewer/ZeroMQTunnel/wrapper_script.py',
-- spawn(
-- event,
-- '/bin/mv',
-- event.sourcePath,
-- event.targetPathdir
-- )
end
end,
--
-- Called when collecting a finished child process
--
collect = function(agent, exitcode)
local config = agent.config
if not agent.isList and agent.etype == "Blanket" then
if exitcode == 0 then
log("Normal", "Startup of '",agent.source,"' finished.")
elseif config.exitcodes and
config.exitcodes[exitcode] == "again"
then
log("Normal", "Retrying startup of '",agent.source,"'.")
return "again"
else
log("Error", "Failure on startup of '",agent.source,"'.")
end
return
end
local rc = config.exitcodes and config.exitcodes[exitcode]
if rc == "die" then
return rc
end
if agent.isList then
if rc == "again" then
log("Normal", "Retrying a list on exitcode = ",exitcode)
else
log("Normal", "Finished a list = ",exitcode)
end
else
if rc == "again" then
log("Normal", "Retrying ", agent.etype, " on ", agent.sourcePath, " = ", exitcode)
else
log("Normal", "Finished ", agent.etype, " on ", agent.sourcePath, " = ", exitcode)
end
end
return rc
end,
}
sync {
gpfs,
delay=0,
init=false,
source="/space/projects/live-viewer/source",
target="/space/projects/live-viewer/target",