This folder contains the code for merlin (which does the actual syncing) and arthur (which sends commands to merlin).
TODO FOR SYNC SCRIPTS
- ensure that the proper permissions (file mode, group, user) are used
- detect if an rsync process is stuck (**)
- place each rsync process in a separate cgroup (***)
** This is optional. If you decide to implement it, you may want to watch the stdout/stderr of the rsync process.
*** I need to do more research into this - don't worry about it for now.
- write process manager
- save state (last attempted time, last attempted status) for each repo, and restore state on startup (e.g. use JSON/INI file for each repo)
- calculate difference between the scheduled time of a job and the time at which it actually ran; log this
- add all repos to merlin-config.ini (*)
- handle termination signals in merlin (SIGINT, SIGTERM); close stopChan for this
- listen on Unix socket in merlin
- implement arthur.go (commands: sync and status)
- allow dynamic reloading in merlin
- use separate log file for each child process (currently sharing stdout/stderr with parent)
- implement zfssync in merlin (just invoke the existing Python script)
* there are some parts that I don't understand (trace_host, csc-sync-ceph, csc-sync-saltstack, etc)